Mañana.Transmisión UDP en Java
Soy bastante nuevo en las conexiones de Java y de socket, pero estoy tratando de enviar un paquete UDP/broadcast en 255.255.255.255 en el puerto 8001 a un dispositivo. Puedo hacer que los datos se envíen correctamente, sin embargo, cuando llega el momento de recibir los datos, la conexión expira. Tengo un detector de paquetes y puedo ver el paquete enviar y luego el dispositivo responde.
Estoy bastante seguro de que es un error de novato que me falta en mi código pero he estado atascado en él por un tiempo y cualquier ayuda sería apreciada.
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();
Gracias y Gig'Em.
EDIT:
No estoy seguro de si esto ayuda, pero cuando veo el objeto m_Socket puedo ver la siguiente justo antes de que envía:
bound = true;
close = false;
connectedAddress = Inet4Address (id = 32) (-1,-1,-1,-1);
connectedPort = 8001;
connectState = 1;
created = true;
impl = PlainDatagramSocketImpl;
oldImpl = false;
y el objeto m_DataPack es la siguiente:
address = Inet4Address (id = 32) (-1,-1,-1,-1);
bufLength = 6 (size of packet I'm sending is 6 char long);
offset = 0;
port = 8001;
Te das cuenta de que tu Gig'Em aliena a algunos graduados de uno de los programas de CS más grandes de América, ¿verdad? – jasonmp85
@ jasonmp85 para aquellos que no son texanos que se preguntan qué significa: https://en.wikipedia.org/wiki/Traditions_of_Texas_A%26M_University#Gig_.27em (sí, tuve que buscarlo;)) – Matthieu