Утро.
Я довольно новичок в Java и сокетных соединениях, но я пытаюсь отправить пакет UDP / широковещательную рассылку 255.255.255.255 на порт 8001 на устройство. Я могу получить данные для отправки просто отлично, однако, когда приходит время получать данные, время соединения истекает. У меня есть анализатор пакетов, и я вижу отправку пакета, а затем устройство отвечает.
Я почти уверен, что это ошибка новичка, которую я пропустил в своем коде, но я застрял на нем некоторое время, и любая помощь будет признательна.
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();
Спасибо и Gig'Em.
EDIT:
Я не уверен, помогает ли это, но когда я смотрю объект m_Socket, я могу видеть следующее прямо перед отправкой:
bound = true;
close = false;
connectedAddress = Inet4Address (id = 32) (-1,-1,-1,-1);
connectedPort = 8001;
connectState = 1;
created = true;
impl = PlainDatagramSocketImpl;
oldImpl = false;
и объект m_DataPack имеет следующий вид:
address = Inet4Address (id = 32) (-1,-1,-1,-1);
bufLength = 6 (size of packet I'm sending is 6 char long);
offset = 0;
port = 8001;