发送和侦听的ccp客户端:概念

时间:2012-02-18 08:54:45

标签: c tcp client

我正在考虑在C中创建一个tcp客户端。 但在我开始之前,我想向你提供一些建议。

客户端用于控制灯光和其他设备。

使用此客户端我需要发送命令,但是当某人关闭灯光时我也可以接收事件。

只使用套接字发送命令没问题。 但与此同时,我必须阅读传入的包裹。

这是如何最好地解决的? 我是否需要使用线程,或者我可以使用像libevent这样的东西来解决这个问题吗?

大多数人如何实施这样的事情?

该库应尽可能便携。 (linux,unix,windows,...)

(我不是在寻找代码,而是一种最好的方法)

2 个答案:

答案 0 :(得分:1)

BSD套接字是双向的,您可以通过select(2)

检查套接字是否有传入数据

恕我直言,使用libevent太多了你的目的。这很好,但你还有很长的路要去实现它的力量。实际上libevent是select(2)或改进的后继epoll(2)等的包装。

答案 1 :(得分:0)

我认为你必须有两个连接,一个用于发送命令,一个用于在有人关灯时从服务器获得响应,大多数情况下两个连词都是睡眠。如果您只创建一个连接,则必须每隔xx ms查询一次光状态,大部分时间都会浪费带宽。如果您的应用程序不严重,服务器可以使用UDP在某人关闭指示灯时通知客户端,该解决方案只需要一个实时TCP连接。