0

我正在运行一个简单的 UDP Java 服务器,它在连接时收集客户端的 IP 和端口,将信息存储在数据库中。

客户端仍在监听服务器。服务器停止。

之后,服务器想重用数据库信息,到达客户端;并且由于客户端仍在侦听服务器的同一端口,我猜客户端应该接收通信。

我是 UDP 新手,请告诉我实现上述目标的方法。谢谢你。

让我重新表述这个问题,因为我确实尝试了 Stackoverflow 成员建议的方法。

服务器可以在很短的时间内联系到客户端,但在 10 分钟后客户端无法访问;虽然看起来客户端一直准备好监听服务器,但是即使尝试了几次,服务器也无法到达客户端。这可能是什么原因?请让我知道处理这个问题的方法

4

2 回答 2

0

我认为您对 UDP 协议( ​​RFC 768 )有点困惑。我认为查看 UDP 协议以了解 UDP 和 TCP 之间的区别会有所帮助。

关于您的具体问题,如果没有任何类型的代码,很难知道您的确切问题是什么。sun 教程中有一个UDP 示例中的客户端-服务器。

于 2009-05-14T07:55:55.870 回答
0

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();
于 2009-05-14T08:15:23.950 回答