37得票10回答
如何检查TcpClient连接是否关闭?

我正在尝试使用TcpClient,并试图找出如何在连接断开时使Connected属性显示为false。我尝试过:NetworkStream ns = client.GetStream(); ns.Write(new byte[1], 0, 0); 但是它仍然无法显示TcpClient是否已断开...

21得票3回答
NetworkStream.Write与Socket.Send的区别

我有一个使用自定义FTP库的C#应用程序。目前,我使用Socket.Send发送数据,但我想知道是否更好地使用NetworkStream.Write,通过套接字初始化NetworkStream。 使用其中一种方法有什么优势吗?

20得票2回答
TPL的TaskFactory.FromAsync与使用阻塞方法的任务

我想知道在使用TPL TaskFactory.FromAsync和TaskFactory.StartNew 在阻塞方法上的性能影响是否有所不同。我正在编写一个TCP服务器,最多支持100个并发连接。使用第一种选项,并将多个读取和写入操作链接起来后,我得到了难以调试的代码。 我相信使用同步版本...

19得票2回答
如何在.NET SslStream中设置超时并重复读取数据?

我只需要从 SslStream 中读取最多 N 个字节,但如果在超时之前没有接收到任何字节,则取消操作,同时保持流处于有效状态以便稍后再次尝试。 (*) 这对于非SSL流(例如 NetworkStream)很容易实现,只需使用其 ReadTimeout 属性即可使流在超时时引发异常。不幸的是,...

18得票4回答
需要关闭NetworkStream和TcpClient吗,还是只需要关闭TcpClient?

我正在阅读TcpClient.Close()的文档,并注意到以下内容: 调用此方法最终将导致关联的Socket关闭,并且如果创建了一个NetworkStream,则还会关闭用于发送和接收数据的关联的NetworkStream。 所以,请纠正我如果我错了,这意味着如果在TcpClient上调...

18得票5回答
C#: 实现 NetworkStream.Peek?

目前在C#中没有NetworkStream.Peek方法。那么如何实现一个类似于NetworkStream.ReadByte的Peek方法,但返回的byte并不会从Stream中移除?

17得票8回答
如何从NetworkStream中获取所有数据

我正在尝试读取通过 TCP/IP 连接的机器缓冲区中的所有数据,但我不知道为什么没有获取到所有数据,有些数据丢失了。 以下是我正在使用的代码...using (NetworkStream stream = client.GetStream()) { byte[] data = new ...

16得票3回答
如何在单元测试中模拟 NetworkStream?

我正在使用Moq和NUnit作为单元测试框架。 我编写了一个方法,该方法以NetworkStream对象作为参数:public static void ReadDataIntoBuffer(NetworkStream networkStream, Queue dataBuffer) { ...

16得票2回答
BeginReceive / BeginRead 超时问题

我正在使用NetworkStream和TcpClient通过BeginRead异步接收数据。我需要对此操作应用超时,以便在指定时间后中止读取。 据我所知,NetworkStream或TcpClient不支持这种方式-有一个ReceiveTimeout属性,但似乎只适用于同步等效的“读取”。 ...

15得票3回答
如何在不关闭流的情况下取消 NetworkStream.ReadAsync?

我正在尝试使用NetworkStream.ReadAsync()来读取数据,但我无法找到如何在调用后取消ReadAsync()的方法。需要说明的是,NetworkStream由一个已连接的BluetoothClient对象(来自32Feet.NET蓝牙库)提供。 我正在尝试的当前代码如下。i...