在工作中,我的任务是将TCP服务器作为Modbus从设备的一部分来实现.我已经在堆栈交换和一般的互联网上做了很多阅读(包括优秀的http://beej.us/guide/bgnet/),但我正在努力解决设计问题.总之,我的设备只能接受2个连接,并且在每个连接上都是传入的modbus请求,我必须在主控制器循环中处理这些请求,然后回复成功或失败状态.我有如何实现这一点的以下想法.
有一个创建,绑定,侦听和接受连接的侦听器线程,然后生成一个新的pthread来监听连接以获取传入数据并在空闲超时期限后关闭连接.如果活动线程的数量当前为2,则立即关闭新连接以确保仅允许2个.
不要从侦听器线程生成新线程,而是使用select()来检测传入的连接请求以及活动连接上的传入modbus连接(类似于Beejs指南中的方法).
我一直在使用C++,但我对Linux开发还不熟悉.我真的很欢迎任何关于上述哪种方法最好的建议(如果有的话)以及我对Linux的经验不足意味着他们中的任何一个都是非常糟糕的想法.我希望避免fork()并坚持使用pthreads,因为传入的modbus请求将被排队并定期从主控制器循环读取.提前感谢任何建议.