Rano.Transmisja UDP w języku Java
Jestem całkiem nowy w Java i połączenia z gniazdem, ale próbuję wysłać pakiet UDP/broadcast na 255.255.255.255 na porcie 8001 do urządzenia. Mogę wysłać dane do wysłania w porządku, ale gdy przychodzi czas na odebranie danych, czas połączenia jest przekroczony. Mam sniffer pakietów i widzę, jak pakiet wysyła, a następnie urządzenie odpowiada.
Jestem prawie pewien, że jest to błąd debiutanta, którego brakuje mi w moim kodzie, ale utknąłem na nim przez jakiś czas i każda pomoc byłaby doceniana.
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();
Dzięki i Gig'Em.
EDIT:
Nie jestem pewien, czy to pomoże, ale kiedy oglądam obiekt m_Socket widzę następujące tuż przed wysłaniem:
bound = true;
close = false;
connectedAddress = Inet4Address (id = 32) (-1,-1,-1,-1);
connectedPort = 8001;
connectState = 1;
created = true;
impl = PlainDatagramSocketImpl;
oldImpl = false;
a obiekt m_DataPack jest następujący:
address = Inet4Address (id = 32) (-1,-1,-1,-1);
bufLength = 6 (size of packet I'm sending is 6 char long);
offset = 0;
port = 8001;
Zdajesz sobie sprawę, że twój Gig'Em zraża niektórych absolwentów jednego z większych programów CS w Ameryce, prawda? – jasonmp85
@ jasonmp85 dla tych nie-Teksańczyków, którzy zastanawiają się, co to znaczy: https://en.wikipedia.org/wiki/Traditions_of_Texas_A%26M_University#Gig_.27em (tak, musiałem to sprawdzić;)) – Matthieu