Mattina.UDP Broadcast in Java
Sono piuttosto nuovo in Java e connessioni socket, ma sto cercando di inviare un pacchetto UDP/broadcast su 255.255.255.255 sulla porta 8001 su un dispositivo. Posso far sì che i dati vengano inviati correttamente, tuttavia quando arriva il momento di ricevere i dati la connessione scade. Ho uno sniffer di pacchetti e posso vedere il pacchetto inviare e poi il dispositivo risponde.
Sono abbastanza sicuro che sia un errore da principiante che mi manca nel mio codice ma sono rimasto bloccato per un po 'e qualsiasi aiuto sarebbe apprezzato.
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();
Grazie e Gig'Em.
EDIT:
Non sono sicuro se questo aiuta, ma quando guardo l'oggetto m_Socket posso vedere il seguente destra prima di inviare:
bound = true;
close = false;
connectedAddress = Inet4Address (id = 32) (-1,-1,-1,-1);
connectedPort = 8001;
connectState = 1;
created = true;
impl = PlainDatagramSocketImpl;
oldImpl = false;
e l'oggetto m_DataPack è la seguente:
address = Inet4Address (id = 32) (-1,-1,-1,-1);
bufLength = 6 (size of packet I'm sending is 6 char long);
offset = 0;
port = 8001;
Ti rendi conto che il tuo Gig'Em aliena alcuni diplomati di uno dei più grandi programmi CS in America, giusto? – jasonmp85
@ jasonmp85 per quei non-texani che si stanno chiedendo cosa significhi: https://en.wikipedia.org/wiki/Traditions_of_Texas_A%26M_University#Gig_.27em (sì, ho dovuto cercarlo;)) – Matthieu