gpt4 book ai didi

c - 断开连接的 udp 套接字是否仍会从另一个套接字连接的端口接收流量?

转载 作者:行者123 更新时间:2023-11-30 19:22:06 26 4
gpt4 key购买 nike

我正在尝试编写一个服务器/客户端对来通过 udp 运行,而我能够实现它的唯一方法是让服务器在连接开始之前了解客户端的 IP 和端口。我的新设计包括等待数据包进入,记录发送者地址, fork 到子进程(父进程循环并继续监听),然后连接到传输数据包的客户端。然后,子进程应该只接收来自关联客户端的数据包,但文档不清楚父套接字是否将继续接收来自该客户端的流量。我正在开发一个程序来尝试它,但我想我可以同时问这个问题。

编辑:似乎当子套接字已连接时,它也会连接父套接字。

最佳答案

UDP协议(protocol)不操作连接,它是一种无连接协议(protocol)。一侧监听而另一侧只需发送数据报即可使数据通道正常工作。

关于这个问题(抱歉,之前没明白重点):使用 UDP 时, fork 不是出路。基于连接的协议(protocol)广泛用于该技术。这是可能的,因为:

  • 你可以在 listen() 之后立即 fork
  • 第一个进程接受连接(并且只有该进程拥有新创建的连接套接字。

当您使用 UDP 时,您没有这样的间隙(就像以前使用 TCP 的 accept() 一样)来知道何时准确 fork (特别是当您有密集的数据报流时)。

所以,当你设计UDP服务时,你需要其中之一

  • 将非阻塞 I/O 与事件循环结合使用或
  • 设计线程解决方案。

关于c - 断开连接的 udp 套接字是否仍会从另一个套接字连接的端口接收流量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18269501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com