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

C 一次在udp服务器上创建两个套接字,如何绑定()?,c,windows,winapi,network-programming,udp,C,Windows,Winapi,Network Programming,Udp,我想在我的udp服务器应用程序上实现两个功能 创建持续接收来自任何客户端的数据的线程 创建一个线程,该线程在特定时间段后在服务器套接字上连续发送数据,并等待客户端的答复。(我实现这一点是为了使aure在任何客户端宕机时都不会从客户端接收到数据,服务器就会知道客户端宕机。) 现在,我面临的问题是,由于两个线程共享同一个连接的套接字,所以每当两个线程试图同时访问该套接字时,就会建立死锁 我找到的解决方案之一是创建两个套接字。一个是连续接收数据的套接字,另一个是用于从服务器不时向客户端发送数据并等待其

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

  • 创建持续接收来自任何客户端的数据的线程

  • 创建一个线程,该线程在特定时间段后在服务器套接字上连续发送数据,并等待客户端的答复。(我实现这一点是为了使aure在任何客户端宕机时都不会从客户端接收到数据,服务器就会知道客户端宕机。)

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

    我找到的解决方案之一是创建两个套接字。一个是连续接收数据的套接字,另一个是用于从服务器不时向客户端发送数据并等待其响应的套接字,但由于必须绑定服务器,并且我已经将我的套接字绑定到了INADR_,我如何创建一个单独的套接字,用于从服务器发送数据并等待客户端的响应

    请帮我解决这个问题

    如果还有其他更好的实施方法,请务必告诉我。
    提前感谢:)

    您必须使用和使用,以确保没有两个线程同时访问套接字


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

    但我希望我的两个线程同时使用SokSet,如果我重用地址,即使如此,我如何使用相同的地址同时接收和发送数据?对不起,如果我问了一些愚蠢的问题,实际上我很困惑:(如果重新使用该地址,您可能可以将第二个套接字绑定到同一端口,然后安全地与线程分开使用。但请记住,只有第一个绑定的套接字才能接收数据。感谢您的帮助,但我希望我的两个线程都能发送和接收数据:(是的,所以我完全改变了我的答案。使用非阻塞读取函数并通过互斥锁保护多线程访问。如果我在服务器端用不同的IP地址(比如172.16.0.0)创建另一个套接字,在客户端,为了回复ACK,客户端应该在这个特定的IP地址发送数据,该怎么办