多个客户端同时连接到同一个服务器端口?

时间:2014-11-18 05:50:02

标签: sockets udp

UDP是否允许两个客户端同时连接到服务器端口?

DatagramSocket udp1 = new DatagramSocket(8000); // = localhost:8000 <-> ?
DatagramSocket udp2 = new DatagramSocket(8000);

如果udp1udp2是从两个不同的IP创建并同时发送数据会怎样?

会引起任何问题吗?

1 个答案:

答案 0 :(得分:2)

注意:UDP并不真正具有&#34; connect&#34;的概念,只是发送和接收数据包。 (例如,如果建立TCP连接类似于打电话,那么发送UDP数据包更像是邮寄信件。)

关于同时到达服务器上相同UDP端口的两个套接字:TCP / IP堆栈为服务器创建的每个套接字保留固定大小的接收缓冲区,并且每当数据包到达端口时套接字被绑定,数据包被放入该缓冲区。然后唤醒服务器程序,并且只要它愿意,就可以recv()数据。因此,在大多数情况下,两个数据包都将被放入缓冲区,然后由服务器程序进行recv()&处理。例外情况是缓冲区中没有足够的空间容纳一个或两个数据包(请记住它是固定大小的缓冲区);在这种情况下,不适合缓冲区的数据包将被丢弃,再也不会再被看到。