【发布时间】:2013-03-30 06:33:49
【问题描述】:
我希望在我的 udp 服务器应用程序上实现两个功能。
创建持续接收来自任何客户端的数据的线程。
创建一个线程,在特定时间段后在服务器套接字上连续发送数据并等待来自客户端的回复(握手机制)。 (我实现这一点是为了确保无论何时任何客户端宕机,客户端都不会发回数据,服务器会知道客户端宕机。)
为此,我在服务器端创建了两个 Soket。 第一个 Socket 绑定()到 INADDR_ANY。
第二个套接字绑定()到我的机器 IP 地址。
来自客户端的所有发送和接收都在第一个套接字上完成。
确保客户端没有宕机的握手机制是在第二个套接字上完成的。
这种方法正确吗? 请务必让我知道,以便我可以继续我的工作。 提前谢谢你。
【问题讨论】:
-
这似乎是 TCP 的情况……您选择使用 UDP 有什么原因吗?
-
@FrankieTheKneeMan:谢谢您的回复。是的,我的主管强迫我使用 UDP,因为我正在开发的项目可能会造成一些数据丢失,而且我更喜欢速度而不是可靠性,这就是我选择 UDP 的原因。
-
那么,您当前的数据流主要是从客户端到服务器?如果没有通信,您只需要定期 ping 客户端吗?我不确定你需要两个插座。
-
实际上我有 40 个客户端,我想每 3 秒对每个客户端执行一次 ping 操作。当服务器 Ping 时,我希望我的服务器能够同时与其他客户端进行正常通信。为此,我决定使用两个线程,一个始终进行正常通信,另一个进行握手。
-
你可以做两个线程而不使用两个套接字。
标签: c windows winapi network-programming udp