我正在为IO设备(即tcp服务器)编写套接字客户端。我能够共同连接并侦听服务器定期发送的数据。但是,我有时需要向服务器发送一些指令并读取其响应。
处理此任务,侦听传入的数据并在发送指令后接收响应并知道接收到的数据的响应的正确方法是什么?
如果设备正在发送数据,而我需要将数据发送到设备怎么办?我该如何调度此类流量?我需要一个线程来阅读,一个线程来写作吗?每个设备是否可以使用单线程处理此问题(最多连接数百个设备)?
我正在使用Socket.Receive
和Socket.Send
方法。
处理此任务,侦听传入的数据并在发送指令后接收响应并知道接收到的数据的响应的正确方法是什么?
协议必须支持这一点。当您发送数据时,不清楚何时接收。该协议必须允许您区分正常数据和响应。您可以在每个具有布尔值字段指示的消息前添加标题。
如果设备正在发送数据,而我需要将数据发送到设备怎么办?
您可以在同一套接字上同时发送和接收。这不是问题。您通常会在线程上阅读。您可以按需书写。不需要专用于此的线程。
最多将连接数百个设备
这意味着您需要进行数百次读取。每个插槽只有一个线程是可行的。另一方面,这开始成为异步IO的好用例。了解如何对套接字使用异步/等待。如果由于您在VS2010上而无法使用async / await,请使用其他方法之一通过套接字实现异步IO。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句