0

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

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

  2. 创建一个线程,在特定时间段后在服务器套接字上连续发送数据并等待客户端的回复。(我实现了这一点,以确保无论何时任何客户端出现故障,都不会从客户端接收到数据,并且服务器会知道客户端已关闭。)

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

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

请帮我解决这个并发症。

如果还有其他更好的实施方式,请告诉我。
提前致谢 :)

4

1 回答 1

1

您将不得不使用非阻塞网络函数并使用互斥锁来确保没有两个线程同时访问套接字。

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

于 2013-03-29T11:00:56.477 回答