UDP是否允许两个客户端同时连接到服务器端口?
DatagramSocket udp1 = new DatagramSocket(8000); // = localhost:8000 <-> ?
DatagramSocket udp2 = new DatagramSocket(8000);
如果从两个不同的IP创建udp1
和udp2
并同时发送数据,会发生什么情况?
会引起什么问题吗?
发布于 2014-11-18 06:52:05
注意: UDP实际上并没有“连接”的概念,只是发送和接收数据包。(例如,如果建立TCP连接类似于拨打电话,则发送UDP数据包更像是邮寄信件)。
关于同时到达服务器上同一UDP端口的两个套接字: TCP/IP堆栈为服务器创建的每个套接字保留一个固定大小的接收缓冲区,并且每当数据包到达该套接字绑定到的端口时,该数据包就被放入该缓冲区。然后,服务器程序被唤醒,只要它需要,就可以接收()数据。所以在大多数情况下,两个包都会被放入缓冲区,然后recv()'d,并由服务器程序处理。例外情况是,缓冲区中没有足够的空间容纳其中一个或两个包(请记住,这是一个固定大小的缓冲区);在这种情况下,不能放入缓冲区的包将被丢弃,再也看不到。
https://stackoverflow.com/questions/26987519
复制