我正在考虑在C中创建一个tcp客户端。 但在我开始之前,我想向你提供一些建议。
客户端用于控制灯光和其他设备。
使用此客户端我需要发送命令,但是当某人关闭灯光时我也可以接收事件。
只使用套接字发送命令没问题。 但与此同时,我必须阅读传入的包裹。
这是如何最好地解决的? 我是否需要使用线程,或者我可以使用像libevent这样的东西来解决这个问题吗?
大多数人如何实施这样的事情?
该库应尽可能便携。 (linux,unix,windows,...)
(我不是在寻找代码,而是一种最好的方法)
答案 0 :(得分:1)
BSD套接字是双向的,您可以通过select(2)
检查套接字是否有传入数据恕我直言,使用libevent太多了你的目的。这很好,但你还有很长的路要去实现它的力量。实际上libevent是select(2)或改进的后继epoll(2)等的包装。
答案 1 :(得分:0)
我认为你必须有两个连接,一个用于发送命令,一个用于在有人关灯时从服务器获得响应,大多数情况下两个连词都是睡眠。如果您只创建一个连接,则必须每隔xx ms查询一次光状态,大部分时间都会浪费带宽。如果您的应用程序不严重,服务器可以使用UDP在某人关闭指示灯时通知客户端,该解决方案只需要一个实时TCP连接。