Java 使用UDP处理多个客户端
设想一个UDP服务器:Java 使用UDP处理多个客户端,java,udp,Java,Udp,设想一个UDP服务器: while (true) { try { socket.receive(packet); // handle packet (potentially CPU-intensive) } catch (IOException e) { e.printStackTrace(); } } 困扰我的是,我只有一个线程来处理来自所有客户端的所有数据包。我假设我的服务器不能在同一个套接字上启动多个线程来接收数据包
while (true) {
try {
socket.receive(packet);
// handle packet (potentially CPU-intensive)
} catch (IOException e) {
e.printStackTrace();
}
}
困扰我的是,我只有一个线程来处理来自所有客户端的所有数据包。我假设我的服务器不能在同一个套接字上启动多个线程来接收数据包?当然,我可以在单独的线程中处理数据包,但我仍然只有一个线程来接收数据包,而且无论将数据包转发到另一个线程所需的时间有多短,服务器仍然不会听到传入的数据包
因此,我的问题是:如果服务器当前未在server.receive()
中被阻止,发送到服务器的数据包是否会丢失,或者它们是否会在下次调用该方法时排队?如果他们迷路了,我如何处理多个客户端
如果服务器当前未在server.receive()中被阻止,发送到服务器的数据包是否丢失
没有
或者他们会在下次调用该方法时排队吗
如果有空间,它们将在套接字接收缓冲区中排队,否则它们将丢失
如何处理多个客户端
要么以足够快的速度处理每个数据包,使套接字接收缓冲区永不溢出,要么启动一个新线程来处理每个数据报