在c#中获取套接字对象的流

Fer*_*Fer 10 c# sockets stream

我有一个客户端 - 服务器应用程序,它通过TCP/IP进行通信.
我使用System.Net.Sockets.Socket类型对象进行TCP上的ascnyronous通信.基本上我打开连接发送/接收数据并关闭连接.我的实现基于Socket类型的对象.
现在我需要使用第三方dll来做某事.这个dll需要一个System.IO.Stream类型对象.所以我需要获取我的Socket对象的Stream对象. 我怎样才能做到这一点? 谢谢.

Chr*_*ain 17

真的很简单.NetworkStream类的构造函数接受要包装的套接字:

http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.aspx

// NOTE: This demonstrates disposal of the stream when you are 
// done with it- you may not want that behavior.
using (var myStream = new NetworkStream(mySocket)) {
    my3rdPartyObject.Foo(myStream);
}
Run Code Online (Sandbox Code Playgroud)

  • 为了防止该流的用户想要调用`myStream.Close()`,我建议构建具有套接字所有权的NetworkStream:`new NetworkStream(mySocket,true)`.否则,您最终想知道为什么在关闭流后仍然阻止在读取操作中阻塞的线程. (3认同)