C++ - 具有多个客户端的 UDP 服务器
C++ - UDP server with multiple clients
我正在学习套接字。我正在编写一个简单的UDP服务器,通过它发送小消息。所有活动客户端每三分钟发送一次"保持连接"消息,以便服务器可以看到哪些客户端处于联机状态。
这些消息在流中接收
流功能:
void keepAlive(SOCKET udp)
{
int len=0;
while(true)
{
int len=recvfrom(udp,requestBuffer,maxMessage,0,(sockaddr*)&cliAddr,&cliAddrSize)
// Actions with the received message
}
}
但是,如果套接字已经"繁忙",则如何实现向所有客户端或特定客户端传输消息。需要创建一个新的套接字来发送消息?(在服务器和客户端上(? 如果客户落后于 NAT?
同样的问题也在客户端(因为keepalive被带到线程中,但是在解决这个问题时,另一个问题也在解决(
服务器收到保持连接消息后,你已经在 cliAddr 中得到了客户端地址。 然后,您可以使用 sendto 函数向客户端发送内容。 如果你想使用其他套接字,你可以做到。 如果客户落后于 NAT? 这不重要。如果服务器获得了 WAN 地址,路由器会将 LAN 中的 IP 地址和端口转换为 WAN 地址和端口。您在服务器中获得的客户端地址是 WAN 地址和端口。广域网(地址和端口(--地图--局域网(地址和端口(。
在客户端中,我建议您创建一个线程来接收消息并处理它们(包括保持连接消息或其他类型的消息(。
相关文章:
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 将数据发送到多个客户端 UDP 时不支持地址族
- 如何击败UDP客户端中的延迟
- C++ UDP 服务器在获取客户端地址配置时发送消息
- UDP 客户端挂起C++问题
- C++ - 具有多个客户端的 UDP 服务器
- UDP 客户端(接收器)未按预期接收数据报
- UDP客户端/服务器程序在不同的IP和端口上通信超过2个插座
- 为什么在此 UDP 客户端/服务器示例中没有必要绑定客户端套接字?
- UDP 客户端到 UDP 服务器的问题,出现 10057 错误
- UDP 客户端不会在 esp32 上广播消息
- 我无法在用C++编写的服务器和用 C# 编写的客户端之间建立 UDP 连接
- 如何在Qt中使UDP"客户端",以便他从服务器接收数据?
- 客户端服务器回声程序进入UDP的僵局
- 无法在 matlab 中的 UDP 客户端和 Linux 中的服务器之间发送数据
- C [UDP]如何跟踪服务器上的所有连接(客户端)套接字连接
- 在cygwin(windows)和gcc/g++mac中的udp客户端服务器
- Boost Asio,异步 UDP 客户端 - 关机时崩溃
- 使用UDP的电子邮件客户端/服务器
- UDP Boost ASIO 异步客户端挂起