我想在linux中使用TCP和UDP套接字进行双向通信。这个想法如下。这是一种传感器网络。
服务器端
while循环(
(1)检查是否有传入的TCP控制消息 如果是,则根据控制消息更新系统
所有其他时间,不断发送垃圾邮件
)
客户端
while(
继续接收UDP广播消息
一旦收到100条UDP消息,就必须向服务器发送TCP控制消息
)
(1)部分是我唯一无法解决的地方。我发现,如果我在(1)部分上使用非阻塞TCP套接字和select()进行短暂间隔,系统将很快返回0并且不接收控制消息。要么我会为select设置一个较长的间隔,但它会阻塞该行,UDP消息无法将其发送出去。我希望有效地发送UDP消息,前提是服务器也可以在任何时候注意到客户端TCP控制消息。
有人可以给我一些关于(1)部分的提示。
答案 0 :(得分:0)
如果在select()之后设置了相应的readFD,则应该只尝试recv()。如果select()返回零,则不会设置任何一个:超时已过期,因此除了发送UDP消息之外,您不应该这样做。