Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets TCP/UDP协议中的解复用_Sockets_Tcp_Udp - Fatal编程技术网

Sockets TCP/UDP协议中的解复用

Sockets TCP/UDP协议中的解复用,sockets,tcp,udp,Sockets,Tcp,Udp,我知道这个问题有一个更老的答案,尽管它似乎没有回答我的问题。如果在UDP中,两个具有不同IP和不同端口的人在同一套接字上向同一服务器(相同IP)发送数据(因为在UDP中,每个应用程序只有一个套接字-如果我错了,请更正我),服务器如何识别谁是谁 如果两个人使用(幸运与否)相同的端口作为源端口,但具有不同的源IP,这会改变什么吗?服务器可以从同一端口上的两个不同IP/端口对(IP可能相同,端口可能相同,或两者可能不同)接收UDP数据报。函数除了返回数据外,还返回数据报的源IP/端口 正如您提到的问题

我知道这个问题有一个更老的答案,尽管它似乎没有回答我的问题。如果在UDP中,两个具有不同IP和不同端口的人在同一套接字上向同一服务器(相同IP)发送数据(因为在UDP中,每个应用程序只有一个套接字-如果我错了,请更正我),服务器如何识别谁是谁

如果两个人使用(幸运与否)相同的端口作为源端口,但具有不同的源IP,这会改变什么吗?

服务器可以从同一端口上的两个不同IP/端口对(IP可能相同,端口可能相同,或两者可能不同)接收UDP数据报。函数除了返回数据外,还返回数据报的源IP/端口


正如您提到的问题中提到的,UDP套接字仅由本地IP和本地端口定义。传出和传入数据包的远程IP和端口可能不同。

源地址由
recvfrom()返回。
。它由一个IP地址和一个端口号组成。如果其中一个在两个客户机上是相同的,则没有歧义。根据定义,它们不能都是相同的。@EJP Ok,它们都是同一个套接字的服务器,对吗?好的,如果两个人在同一个端口上发送到服务器,并且他们有不同的IP和端口,那么他们都将得到同一个UDP套接字的服务,对吗?对。服务器将根据
recvfrom()
返回的额外数据知道数据包来自何处这可能有点微不足道,但当你说额外数据时,你能更具体一点吗?
ssize\u t recvfrom(int s,void*buf,size\u t len,int标志,struct sockaddr*from,socklen\u t*fromlen)
消息发送者的IP/端口在
from
参数中返回。因此服务器将通过from参数知道whci person是谁,该参数包含消息中心的IP/端口,对吗?