UDP-клиент недоступен в Java - PullRequest
0 голосов
/ 14 мая 2009

Я использую простой UDP-сервер Java, который собирает IP и порт клиента при подключении, хранит информацию в базе данных.

Клиент все еще слушает сервер. Сервер останавливается.

Позже сервер хочет повторно использовать информацию базы данных, чтобы связаться с клиентом; и так как клиент все еще слушает тот же порт сервера, я думаю, что клиент должен получить сообщение.

Я новичок в UDP, пожалуйста, дайте мне знать способ достижения вышеуказанной цели. Спасибо.

Позвольте мне перефразировать вопрос, поскольку я попробовал способы, предложенные членами Stackoverflow.

С клиентом может связаться сервер в течение короткого промежутка времени, но через 10 минут клиент будет недоступен; хотя кажется, что клиент готов к прослушиванию сервера все время, но сервер не может связаться с клиентом, даже если попытался несколько раз. Что может быть причиной для этого? пожалуйста, дайте мне знать, как справиться с этим

Ответы [ 2 ]

0 голосов
/ 14 мая 2009

UDP не имеет сессии, поэтому я думаю, что он действительно должен работать.

Это будет примерно так:

// Client:

socket = new DatagramSocket();
DatagramPacket req = new DatagramPacket(data, data.length, serverAddress, serverPort);
socket.send(req);
DatagramPacket resp = new DatagramPacket(new byte[MAX_RESP_SIZE], MAX_RESP_SIZE);
socket.receive(resp);

// Server:

DatagramSocket socket = new DatagramSocket(port);
while (!stopped) {
    DatagramPacket req = new DatagramPacket(new byte[MAX_REQ_SIZE], MAX_REQ_SIZE);
    socket.receive(req);
    saveToDatabase(req.getAddress(), req.getPort());
}
socket.close();

// Then later:

DatagramSocket socket = new DatagramSocket(port);

// retrieve clientAddr and clientPort from database
DatagramPacket resp = new DatagramPacket(data, data.length, clientAddress, clientPort);
socket.send(resp);
socket.close();
0 голосов
/ 14 мая 2009

Я думаю, вы немного запутались в отношении протокола UDP ( RFC 768 ). Я думаю, что было бы полезно рассмотреть протокол UDP, чтобы понять различия между UDP и TCP.

Что касается вашей конкретной проблемы, трудно понять, в чем именно заключается ваша проблема, без какого-либо кода. * Пример клиент-сервер в UDP доступен в учебных руководствах sun.

...