我想在linux中使用TCP和UDP套接字进行双向通信。这个想法如下所示。这是一种传感器网络。
服务器端
while循环(
(1)检查是否有TCP控制报文传入,如果有,根据控制报文更新系统
对于所有其他时间,请继续发送UDP消息
)
客户端
while (
保持接收UDP广播报文
一旦它接收到100个UDP消息,它就必须向服务器发送TCP控制消息
)
第(1)部分是我唯一不能解决的地方。我发现如果在短时间内在(1)部分使用带有select()的非阻塞TCP套接字,系统很快就会返回0,并且不会收到控制消息。或者我会设置一个很长的select间隔,但是它会阻塞线路,并且UDP消息无法将其发送出去。我希望有效地发送UDP消息,前提是服务器也可以随时注意到客户端TCP控制消息。
谁能给我一些关于(1)部分的提示。
发布于 2014-04-27 07:52:54
只有在select()之后设置了相应的readFD,您才应该尝试recv()。如果select()返回0,则它们都没有被设置:超时已过期,因此除了发送UDP消息外,您不应该执行任何操作。
https://stackoverflow.com/questions/23312552
复制相似问题