UDP是否允许两个客户端同时连接到服务器端口?
DatagramSocket udp1 = new DatagramSocket(8000); // = localhost:8000 <-> ?
DatagramSocket udp2 = new DatagramSocket(8000);
如果udp1
和udp2
是从两个不同的IP创建并同时发送数据会怎样?
会引起任何问题吗?
答案 0 :(得分:2)
注意:UDP并不真正具有&#34; connect&#34;的概念,只是发送和接收数据包。 (例如,如果建立TCP连接类似于打电话,那么发送UDP数据包更像是邮寄信件。)
关于同时到达服务器上相同UDP端口的两个套接字:TCP / IP堆栈为服务器创建的每个套接字保留固定大小的接收缓冲区,并且每当数据包到达端口时套接字被绑定,数据包被放入该缓冲区。然后唤醒服务器程序,并且只要它愿意,就可以recv()数据。因此,在大多数情况下,两个数据包都将被放入缓冲区,然后由服务器程序进行recv()&处理。例外情况是缓冲区中没有足够的空间容纳一个或两个数据包(请记住它是固定大小的缓冲区);在这种情况下,不适合缓冲区的数据包将被丢弃,再也不会再被看到。