(WinSock),服务器的WSARecvFrom源IP地址应该填什么?
(WinSock), What should I fill in WSARecvFrom source ip address for server?
所以,我正在实现客户端和服务器之间的udp数据包通信。
我已经使用 WSASendTo
从服务器向客户端发送 udp 数据
对于客户端,WSARecvFrom
中的参数sockaddr* ipFrom
是服务器的端点。一切正常。
但是问题是服务器只使用了一个udp socket,所以不知道WSARecvFrom
里的sockaddr* ipFrom
参数应该填什么。由于每个客户端都有不同的ip,我无法指定源ip地址。
我试着在这个参数中只填入nullptr,但没有用。我尝试用服务器端点填充它,它起作用了。
但是如您所知,ipFrom
使用服务器端点没有意义,因为那不是源地址,所以我很好奇 address/endpoint 我应该填写什么 sockaddr* ipFrom
.
编辑:顺便说一下,我在使用它之前将 udp 套接字绑定为服务器 ip/port。
the problem is that the server uses only one udp socket, so I don't know what should I fill in sockaddr* ipFrom
parameter in WSARecvFrom
.
没有。那不是你在那次通话中的责任。
But as you know, using server endpoint for ipFrom
doesn't make sense because that is not source address, so I'm curious what address/endpoint should I fill in sockaddr* ipFrom
.
None.
您似乎对 ipFrom
参数的含义有误解。它是一个 output 参数,而不是输入参数。所以你根本不需要向它提供任何数据。 WSARecvFrom()
收到 一个传入数据包。如果您想知道该数据包的发送者是谁(即,使用 WSASendTo()
发回后续回复),您可以提供指向分配的 sockaddr_...
的指针,然后 WSARecvFrom()
填充它与发件人的信息。 sockaddr_...
你自己根本就没有填写。
就像客户端收到服务器的数据包,WSARecvFrom()
上报服务器的信息一样,服务器收到客户端的数据包,WSARecvFrom()
上报客户端的信息也是一样的.
所以,我正在实现客户端和服务器之间的udp数据包通信。
我已经使用 WSASendTo
对于客户端,WSARecvFrom
中的参数sockaddr* ipFrom
是服务器的端点。一切正常。
但是问题是服务器只使用了一个udp socket,所以不知道WSARecvFrom
里的sockaddr* ipFrom
参数应该填什么。由于每个客户端都有不同的ip,我无法指定源ip地址。
我试着在这个参数中只填入nullptr,但没有用。我尝试用服务器端点填充它,它起作用了。
但是如您所知,ipFrom
使用服务器端点没有意义,因为那不是源地址,所以我很好奇 address/endpoint 我应该填写什么 sockaddr* ipFrom
.
编辑:顺便说一下,我在使用它之前将 udp 套接字绑定为服务器 ip/port。
the problem is that the server uses only one udp socket, so I don't know what should I fill in
sockaddr* ipFrom
parameter inWSARecvFrom
.
没有。那不是你在那次通话中的责任。
But as you know, using server endpoint for
ipFrom
doesn't make sense because that is not source address, so I'm curious what address/endpoint should I fill insockaddr* ipFrom
.
None.
您似乎对 ipFrom
参数的含义有误解。它是一个 output 参数,而不是输入参数。所以你根本不需要向它提供任何数据。 WSARecvFrom()
收到 一个传入数据包。如果您想知道该数据包的发送者是谁(即,使用 WSASendTo()
发回后续回复),您可以提供指向分配的 sockaddr_...
的指针,然后 WSARecvFrom()
填充它与发件人的信息。 sockaddr_...
你自己根本就没有填写。
就像客户端收到服务器的数据包,WSARecvFrom()
上报服务器的信息一样,服务器收到客户端的数据包,WSARecvFrom()
上报客户端的信息也是一样的.