我正在为IO设备编写套接字客户端,这是tcp服务器。我能够连接并监听服务器定期发送的数据。但有时,我需要向服务器发送一些指令并阅读其响应。
处理此任务的正确方法是什么,能够监听传入的数据以及发送指令后,接收响应并知道响应的接收数据部分是什么?
如果设备正在发送数据,我需要将数据发送到设备怎么办?我怎样才能发送这样的流量?我需要一个线程来阅读而一个需要写入吗?是否可以使用每个设备的单个线程来处理这个问题(连接将有多达数百个设备)?
我正在使用Socket.Receive
和Socket.Send
方法。
答案 0 :(得分:1)
处理此任务的正确方法是什么,以便能够倾听 传入的数据和指令发送后,接收响应和 知道,女巫部分收到数据的反应是什么?
协议必须支持这一点。发送数据时,不清楚何时收到数据。该协议必须允许您区分正常数据和响应。您可以为每个消息添加一个标头,该消息具有指示此的布尔字段。
如果设备正在发送数据怎么办?我需要将数据发送到设备?
您可以同时在同一个套接字上发送和接收。这不是问题。你通常会有线程阅读。你可以按需写。不需要专门的线程。
将连接多达数百台设备
这意味着你需要有数百个未完成的读物。这对每个插槽一个线程是可行的。另一方面,这开始是异步IO的一个很好的用例。了解如何使用套接字async / await。如果因为你在VS2010上而无法使用async / await,请使用其他一种通过套接字实现异步IO的方法。