使用C#中的套接字接收连续数据流

时间:2013-11-20 18:38:48

标签: c# multithreading sockets

我正在尝试编写一个客户端应用程序,它连接到指定端口上的服务器并接收数据。

我找到了this fine example,但我的问题是服务器一直向我发送数据(没有关闭连接),所以ReceiveCallback永远不会结束,因为client.EndReceive(ar)永远不会返回0。 / p>

因此,我的WinForm在接收数据时会冻结。

我们的想法是监控所有传入的数据并在某些情况下进行一些回调。

我是C#的新手,你能指出我正确的方向吗?多线程?

1 个答案:

答案 0 :(得分:1)

有两个线程:一个用于用户界面,另一个用于从“无限套接字”读取。无限线程循环永远从套接字读取适当大小的块,也许做一些预处理。然后,它使用Control.Invoke()在UI线程上调用方法,并在参数中将块传递给它。确保块足够小,以便UI线程可以在不锁定的情况下处理它们,比如0.1秒。