具有多个客户端的UDP服务器的基本原理

时间:2014-02-07 15:43:13

标签: java udp client-server

我正在使用Java中的UDP实现FTP程序(TCP不是一个选项),但是我很难掌握它应该如何工作的基础知识。

据我所知,它是无连接的,所以我应该只运行一个服务器线程来处理任何客户端的每个请求。

我在实际的文件传输过程中感到困惑。如果服务器处于循环中间,将包含所请求文件位的数据报发送到客户端,并且正在等待来自客户端的ACK,而不是从不同的客户端收到完全不同的请求,我该怎么想?处理那个?

我知道我可以跳出循环来处理它,但是如果最初预期的数据包最终到达,我怎么能从我离开的地方拿起?

1 个答案:

答案 0 :(得分:0)

UDP服务器在很多方面与TCP类似。主要区别在于您不会收到收到您的数据包的确认。您仍然需要知道要发送给哪个客户端,因此请使用DatagramSocket类。这是UDP的Oracle教程:http://docs.oracle.com/javase/tutorial/networking/datagrams/index.html。它有一个很好的例子。重要的是获取原始客户端的地址和端口,并将数据包返回给该客户端:

InetAddress address = packet.getAddress();
int port = packet.getPort();
new DatagramPacket(buf, buf.length, address, port);

您可以在服务器端启动一个新线程,以便在每次客户端发送请求时发送这些位。该线程将保存客户端的返回地址和端口,并在文件发送完成后死亡。