C#1套接字客户端连续数据

Mar*_*ark 1 c# sockets

我正在编写一个连接到单个套接字的服务,然后读取连续且有时很多的数据.我收到的数据应该交给另一个线程(在服务中)进行处理,原因是处理可能需要一段时间,我不想阻止接收套接字.

我打算使用Begin或Async接收方法来处理数据,而不是让线程运行读取并发队列或其他东西.我需要这个扩展到可能通过套接字的大量数据.有什么建议?

Jim*_*hel 5

我不确定使用异步接收如何帮助处理.据我所知,你将有一个连接到套接字的线程并读取连续的数据流.我假设线程可以将连续流分解为某种记录,或者至少是可管理大小的块.然后,您必须将该数据提供给一个或多个处理线程.

我强烈建议你使用并发队列(实际上是a BlockingCollection)在读取数据的线程和将要进行处理的线程之间进行通信.我建议使用以下几个原因BlockingCollection:

  • 它易于使用 - 没有明确的锁定代码
  • 它做非繁忙的等待
  • 它有效地处理N个读者和N个作者

你的是一个非常典型的生产者/消费者应用程序.生产者(读取套接字的线程)获取数据,将其放入队列,然后一个或多个消费者(处理线程)可以读取和处理数据.我不能想到在.NET中使用更简单,更有效或更有效的方法而不是使用BlockingCollection.