Morgen.UDP-Übertragung in Java
Ich bin ziemlich neu in Java und Socket-Verbindungen, aber ich versuche, ein UDP-Paket/Broadcast auf 255.255.255.255 auf Port 8001 zu einem Gerät zu senden. Ich kann die Daten zum Senden erhalten, aber wenn es Zeit ist, die Daten zu empfangen, wird die Verbindung unterbrochen. Ich habe einen Paket-Sniffer und ich kann das Paket senden und dann das Gerät antworten.
Ich bin mir ziemlich sicher, dass es ein Anfängerfehler ist, dass ich in meinem Code vermisse, aber ich habe es eine Weile festgefahren und jede Hilfe würde geschätzt werden.
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();
Danke und Gig'Em.
EDIT:
Ich bin nicht sicher, ob das hilft, aber wenn ich das m_Socket Objekt beobachten kann ich folgendes Recht sehen, bevor es sendet:
bound = true;
close = false;
connectedAddress = Inet4Address (id = 32) (-1,-1,-1,-1);
connectedPort = 8001;
connectState = 1;
created = true;
impl = PlainDatagramSocketImpl;
oldImpl = false;
und das m_DataPack Objekt ist die folgende:
address = Inet4Address (id = 32) (-1,-1,-1,-1);
bufLength = 6 (size of packet I'm sending is 6 char long);
offset = 0;
port = 8001;
Sie wissen, dass Ihr Gig'Em einige Absolventen eines der größeren CS-Programme in Amerika verfremdet, richtig? – jasonmp85
@ jasonmp85 für jene Nicht-Texaner, die sich wundern, was es bedeutet: https://en.wikipedia.org/wiki/Traditions_of_Texas_A%26M_University#Gig_.27em (ja, ich musste nachsehen;)) – Matthieu