如何使用C#socket tcp连接调度发送/接收数据

时间:2014-07-13 10:31:50

标签: c# sockets

我正在为IO设备编写套接字客户端,这是tcp服务器。我能够连接并监听服务器定期发送的数据。但有时,我需要向服务器发送一些指令并阅读其响应。

处理此任务的正确方法是什么,能够监听传入的数据以及发送指令后,接收响应并知道响应的接收数据部分是什么?

如果设备正在发送数据,我需要将数据发送到设备怎么办?我怎样才能发送这样的流量?我需要一个线程来阅读而一个需要写入吗?是否可以使用每个设备的单个线程来处理这个问题(连接将有多达数百个设备)?

我正在使用Socket.ReceiveSocket.Send方法。

1 个答案:

答案 0 :(得分:1)

  

处理此任务的正确方法是什么,以便能够倾听   传入的数据和指令发送后,接收响应和   知道,女巫部分收到数据的反应是什么?

协议必须支持这一点。发送数据时,不清楚何时收到数据。该协议必须允许您区分正常数据和响应。您可以为每个消息添加一个标头,该消息具有指示此的布尔字段。

  

如果设备正在发送数据怎么办?我需要将数据发送到设备?

您可以同时在同一个套接字上发送和接收。这不是问题。你通常会有线程阅读。你可以按需写。不需要专门的线程。

  

将连接多达数百台设备

这意味着你需要有数百个未完成的读物。这对每个插槽一个线程是可行的。另一方面,这开始是异步IO的一个很好的用例。了解如何使用套接字async / await。如果因为你在VS2010上而无法使用async / await,请使用其他一种通过套接字实现异步IO的方法。