首页 文章

服务器可以从不同的进程和套接字发送响应吗?

提问于
浏览
1

在侦听端口X的服务器收到来自客户端的请求后,它是否可以从其他进程和带有sendto调用的套接字发送响应 . 请注意,客户端还发送带有sendto(服务器地址)调用的请求 .

以下是步骤:

  • server打开一个套接字并将其绑定到IP地址(a.b.c.d)和端口(x)

  • 客户端打开一个套接字并将其绑定到IP地址(k.l.m.n)和端口(z),并通过sendto调用向服务器发送请求 .

  • 服务器(在不同的进程中)打开一个套接字并将其绑定到IP地址(a.b.c.d)和端口(y)

  • 服务器使用sendto从上面的套接字向客户端发送响应

客户端和服务器都知道彼此的IP地址和端口号 .

我注意到,当服务器从其他进程发送响应时,客户端不会收到响应 . 否则就是这样 .

1 回答

  • 1

    这可以做,但有一些重要的警告 .

    • 客户端必须绑定套接字并使用 sendto()recvfrom() 而不是 connect() '进入套接字并使用 send()recv() . 这允许它从任何地方接收传入的数据包,只要它们被定向到 recvfrom() 正在读取的IP /端口 .

    • 如果客户端和服务器之间的路径中存在防火墙或NAT,则可能会阻止响应,因为发送IP /端口与客户端最初发送其请求的IP /端口不匹配 .

相关问题