命名空间:
System.Net.Sockets
Assemblies:
System.Net.Sockets.dll, System.dll, netstandard.dll
为网络访问提供数据的基础流。
public class NetworkStream : System.IO.Stream
继承
Object
MarshalByRefObject
Stream
NetworkStream
示例
下面的代码示例演示如何创建NetworkStream
从连接StreamSocket
并执行基本的同步阻塞 I/O
。
// Examples for constructors that do not specify file permission.
// Create the NetworkStream for communicating with the remote host.
NetworkStream myNetworkStream;
if (networkStreamOwnsSocket){
myNetworkStream = new NetworkStream(mySocket, true);
}
else{
myNetworkStream = new NetworkStream(mySocket);
}
注解
NetworkStream
类提供了用于通过发送和接收数据的方法Stream
处于阻止模式套接字。 有关详细信息,有关阻止与非阻止性Sockets
,请参阅使用异步客户端套接字。 可以使用NetworkStream
的这两个同步和异步数据传输类。 有关同步和异步通信的详细信息,请参阅套接字。
若要创建NetworkStream
,则必须提供连接Socket
。 此外可以指定哪些FileAccess
权限NetworkStream
通过提供具有Socket
。 默认情况下,关闭NetworkStream
不会关闭所提供Socket
。 如果你想NetworkStream
能够关闭所提供的权限Socket
,则必须指定true
的值的ownsSocket参数。
使用Write
和Read
方法用于简单的单线程同步阻塞 I/O
。 如果你想要处理 I/O
使用单独的线程,请考虑使用BeginWrite
并EndWrite
方法,或BeginRead
和EndRead
方法进行通信。
NetworkStream
不支持对网络数据流的随机访问。 值CanSeek
属性,用于指示流是否支持查找,始终是false
; 读取Position
属性,读取Length
属性或调用Seek
方法将引发NotSupportedException
.
读取和写入操作可以同时执行的实例上NetworkStream
类,而无需同步。 只要没有个写入操作的一个唯一线程和读取操作的一个唯一的线程,读取之间将存在交叉引用和写线程并没有进行的同步不需要。
构造函数
名称 | 说明 |
---|---|
NetworkStream(Socket) | 为指定的 Socket 创建 NetworkStream 类的新实例。 |
NetworkStream(Socket, Boolean) | 用指定的 Socket 所属权为指定的 Socket 初始化 NetworkStream 类的新实例。 |
NetworkStream(Socket, FileAccess) | 用指定的访问权限为指定的 NetworkStream 创建 Socket 类的新实例。 |
NetworkStream(Socket, FileAccess, Boolean) | 用指定的访问权限和指定的 Socket 所属权为指定的 Socket 创建 NetworkStream 类的新实例。 |
属性
名称 | 说明 |
---|---|
CanRead | 获取一个值,该值指示 NetworkStream 是否支持读取。 |
CanSeek | 获取一个值,该值指示流是否支持查找。 当前不支持此属性,它始终返回 false。 |
CanTimeout | 指示超时属性是否可用于 NetworkStream。 |
CanWrite | 获取一个值,该值指示 NetworkStream 是否支持写入。 |
DataAvailable | 获取一个值,该值指示在要读取的 NetworkStream 上是否有可用的数据。 |
Length | 获取流上可用数据的长度。 此属性当前不受支持,总是引发 NotSupportedException。 |
Position | 获取或设置流中的当前位置。 此属性当前不受支持,总是引发 NotSupportedException。 |
Readable | 获取或设置一个值,该值指示 NetworkStream 是否可以读取。 |
ReadTimeout | 获取或设置读取操作阻止等待数据的时间。 |
Socket | 获取基础 Socket。 |
Writeable | 获取一个值,该值指示 NetworkStream 是否可写入数据。 |
WriteTimeout | 获取或设置写入操作阻止等待数据的时间。 |
方法
名称 | 说明 |
---|---|
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) | 从 NetworkStream 开始异步读取。 |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) | 开始向流异步写入。 |
Close(Int32) | 等待指定的时间获许发送数据之后,关闭 NetworkStream。 |
CopyTo(Stream) | 从当前流中读取字节并将其写入到另一流中。 |
(Inherited from Stream) | |
CopyTo(Stream, Int32) | 使用指定的缓冲区大小,从当前流中读取字节并将其写入到另一流中。 |
(Inherited from Stream) | |
CopyToAsync(Stream) | 从当前流中异步读取字节并将其写入到另一个流中。 |
(Inherited from Stream) | |
CopyToAsync(Stream, Int32) | 使用指定的缓冲区大小,从当前流中异步读取字节并将其写入到另一流中。 |
(Inherited from Stream) | |
CopyToAsync(Stream, Int32, CancellationToken) | 使用指定的缓冲区大小和取消令牌,从当前流中异步读取字节并将其写入到另一个流中。 |
(Inherited from Stream) | |
CreateObjRef(Type) | 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 |
(Inherited from MarshalByRefObject) | |
CreateWaitHandle() | 分配 WaitHandle 对象。 |
(Inherited from Stream) | |
Dispose() | 释放由 Stream 使用的所有资源。 |
(Inherited from Stream) | |
Dispose(Boolean) | 释放由 NetworkStream 占用的非托管资源,还可以另外再释放托管资源。 |
EndRead(IAsyncResult) | 处理异步读取的结束。 |
EndWrite(IAsyncResult) | 处理异步写入的结束。 |
Equals(Object) | 确定指定的对象是否等于当前对象。 |
(Inherited from Object) | |
Finalize() | 释放由 NetworkStream 使用的所有资源。 |
Flush() | 刷新流中的数据。 此方法保留供将来使用。 |
FlushAsync() | 异步清除此流的所有缓冲区并导致所有缓冲数据都写入基础设备中。 |
(Inherited from Stream) | |
FlushAsync(CancellationToken) | 以异步操作形式刷新流中的数据。 |
GetHashCode() | 作为默认哈希函数。 |
(Inherited from Object) | |
GetLifetimeService() | 检索控制此实例的生存期策略的当前生存期服务对象。 |
(Inherited from MarshalByRefObject) | |
GetType() | 获取当前实例的 Type。 |
(Inherited from Object) | |
InitializeLifetimeService() | 获取生存期服务对象来控制此实例的生存期策略。 |
(Inherited from MarshalByRefObject) | |
MemberwiseClone() | 创建当前 Object 的浅表副本。 |
(Inherited from Object) | |
MemberwiseClone(Boolean) | 创建当前 MarshalByRefObject 对象的浅表副本。 |
(Inherited from MarshalByRefObject) | |
ObjectInvariant() | 提供对 Contract 的支持。 |
(Inherited from Stream) | |
Read(Byte[], Int32, Int32) | 从 NetworkStream 读取数据。 |
ReadAsync(Byte[], Int32, Int32) | 从当前流异步读取字节序列,并将流中的位置提升读取的字节数。 |
(Inherited from Stream) | |
Seek(Int64, SeekOrigin) | 将流的当前位置设置为给定值。 此方法当前不受支持,总是引发 NotSupportedException。 |
SetLength(Int64) | 设置流的长度。 此方法始终引发 NotSupportedException。 |
ToString() | 返回表示当前对象的字符串。 |
(Inherited from Object) | |
Write(Byte[], Int32, Int32) | 将数据写入 NetworkStream。 |
WriteAsync(Byte[], Int32, Int32) | 将字节序列异步写入当前流,并将流的当前位置提升写入的字节数。 |
(Inherited from Stream) |