Sabah.Java'da UDP Yayını
Java ve soket bağlantılarında oldukça yeniyim, ancak bir cihaza 8001 numaralı bağlantı noktasında 255.255.255.255 numaralı telefondan UDP paketi/yayını göndermeye çalışıyorum. Verileri iyi gönderecek şekilde alabilirim, ancak veriyi almak için zaman geldiğinde bağlantı zaman aşımına uğrar. Bir paket dinleyicim var ve paketin gönderilip ardından cihazın yanıt verdiğini görebiliyorum.
Eminim ki kodumda eksik olduğum bir çaylak hatası var ama bir süredir takılı kaldım ve herhangi bir yardım takdir edilecekti.
m_Socket = new DatagramSocket(m_SERVERPORT);
InetAddress address = InetAddress.getByName(m_SERVERIP);
m_DataPack = new DatagramPacket(m_SERVERCMD.getBytes(), m_SERVERCMD.getBytes().length,
address, m_SERVERPORT);
m_Socket.setBroadcast(true);
m_Socket.connect(address, m_SERVERPORT);
m_Socket.send(m_DataPack);
m_DataPack = new DatagramPacket(data, data.length,
address, m_SERVERPORT);
m_Socket.receive(m_DataPack); // This is where it times out
data = m_DataPack.getData();
String received = data.toString();
System.out.println("Received: " + received);
m_Socket.close();
Teşekkürler ve Gig'Em.
DÜZENLEME:
ben bu yardımcı olur emin değilim ama m_Socket nesneyi izlerken gönderir hemen önce aşağıdaki görebilirsiniz:
bound = true;
close = false;
connectedAddress = Inet4Address (id = 32) (-1,-1,-1,-1);
connectedPort = 8001;
connectState = 1;
created = true;
impl = PlainDatagramSocketImpl;
oldImpl = false;
ve m_DataPack nesne şudur:
address = Inet4Address (id = 32) (-1,-1,-1,-1);
bufLength = 6 (size of packet I'm sending is 6 char long);
offset = 0;
port = 8001;
Gig'Em'inizin Amerika'daki büyük CS programlarından birinin mezunlarını yabancılaştırdığını biliyorsunuz, değil mi? – jasonmp85
@ jasonmp85, ne anlama geldiğini merak edenler için Texan: https://en.wikipedia.org/wiki/Traditions_of_Texas_A%26M_University#Gig_.27em (evet, ben bakmak zorunda;;)) – Matthieu