gpt4 book ai didi

一次在udp服务器上创建两个套接字,如何bind()?

转载 作者:行者123 更新时间:2023-11-30 15:50:32 25 4
gpt4 key购买 nike

我希望在我的 udp 服务器应用程序上实现两个功能。

  1. 创建连续接收来自任何客户端的数据的线程。

  2. 创建一个线程,在特定时间段后持续向服务器套接字发送数据并等待客户端的回复。 (我实现此目的是为了确保每当任何客户端出现故障时,都不会从客户端接收回数据,并且服务器会知道客户端已出现故障。)

现在,我面临的问题是,由于两个线程共享同一个连接的套接字,因此每当两个线程尝试同时访问该套接字时,就会建立死锁。

我发现的解决方案之一是创建两个套接字。一个持续接收数据,另一个套接字用于不时从服务器向客户端发送数据并等待它们的响应,但由于服务器必须被绑定(bind)(),并且我已将我的套接字绑定(bind)()到INADDR_ANY一次,我如何创建一个单独的套接字来从服务器发送数据并等待客户端的回复。

请帮我解决这个并发症。

如果还有其他更好的实现方法,请告诉我。
预先感谢:)

最佳答案

您必须使用non-blocking net functions并使用 mutex确保没有两个线程同时访问套接字。

但是,如果您使用非阻塞函数,单个线程可能就足够了。使用多个线程可能不会提高性能,但可能使代码更具可读性。

关于一次在udp服务器上创建两个套接字,如何bind()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15701716/

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