protocolo protocol java udp broadcast

protocol - Transmisión UDP en Java



udp protocol (3)

Si desea recibir un datagrama, debe vincular () al punto final local (dirección + puerto).

Mañana.

Soy bastante nuevo en Java y conexiones 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 atrapado 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.

EDITAR:

No estoy seguro si esto ayuda, pero cuando miro el objeto m_Socket puedo ver lo siguiente justo antes de enviar:

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 el 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;


Esto no tiene sentido. Estás transmitiendo, que es de 1 a muchos, y también te estás conectando, que es de 1 a 1. ¿Cuál es?

Pierde la conexión. Y pierde el 255.255.255.255. Esto ha sido muy obsoleto durante aproximadamente 20 años. Use una dirección de difusión local de subred, por ejemplo, 192.168.1.255.