我正在编写一个基于UDP的客户端服务器并且已经获得了相当多的代码,但我对UDP服务器如何将响应发送回UDP客户端感到困惑,这是我的理解,直到现在:
我的困惑是,在服务器端,有一个套接字绑定到UDP端口并"连续"监听任何UDP客户端请求,但在客户端不是这样,UDP客户端将打开一个套接字发送请求到UDP服务器,那就是它,我认为它不能保持该端口挂起UDP服务器响应,如果该端口关闭,那么客户端将如何接收响应.
我的意思是说,UDP服务器的响应将返回UDP客户端,因为IP地址在那里,但一旦该响应已到达客户端的UDP模块,即使有一个端口,但UDP模块如何将其发送给最初的客户端发送请求是因为它会关闭绑定到该端口的套接字?或者它不会?
我正在寻找能够清楚地描述UDP通信的答案(我不想将它与TCP进行对比或解释TCP,因为我已经对TCP有了一定的了解),尤其是响应将如何回到UDP客户端.
我的困惑是,在服务器端,有一个套接字绑定到UDP端口并“连续”侦听任何UDP客户端请求,但在客户端并非如此,UDP客户端将打开一个套接字将请求发送到UDP 服务器,就是这样,我认为它不能保持该端口挂起以供 UDP 服务器响应,如果该端口关闭,那么客户端将如何接收返回的响应。
我同意。这就是你的困惑。您认为为什么不能保持套接字打开并对其进行接收?它可以。
我的意思是,当然,UDP服务器的响应将到达UDP客户端,因为IP地址在那里,但是一旦该响应到达客户端的UDP模块,即使会有一个端口,但是UDP模块如何将其发送到最初的客户端发送请求是因为它会关闭绑定到该端口的套接字?
为什么?
或者不会?
不是。
客户端:
recvfrom()或朋友收到回复。当然,如果客户端对响应不感兴趣,它可以关闭套接字,但这不是正常情况。
我正在寻找清楚描述UDP通信的答案(我不感兴趣将其与TCP进行对比或解释TCP,因为我已经对TCP有了一定的了解),特别是响应如何返回UDP客户端。
所以不要用tcp标签来标记你的问题。