NetworkStream 类

定义

提供用于网络访问的基础数据流。

public ref class NetworkStream : System::IO::Stream
public class NetworkStream : System.IO.Stream
type NetworkStream = class
    inherit Stream
type NetworkStream = class
    inherit Stream
    interface IDisposable
Public Class NetworkStream
Inherits Stream
继承
NetworkStream
继承
实现

注解

NetworkStream 类提供了在阻止模式下通过 Stream 套接字发送和接收数据的方法。 有关阻止与非阻止 Socket的详细信息,请参阅 使用异步客户端套接字。 可以将 NetworkStream 类用于同步和异步数据传输。 有关同步和异步通信的详细信息,请参阅 套接字

若要创建 NetworkStream,必须提供连接的 Socket。 还可以指定 NetworkStream 对提供的 Socket具有哪些 FileAccess 权限。 默认情况下,关闭 NetworkStream 不会关闭提供的 Socket。 如果希望 NetworkStream 有权关闭提供的 Socket,则必须为 ownsSocket 参数的值指定 true

WriteRead 方法用于简单的单线程同步阻塞 I/O。 如果要异步处理 I/O,请考虑使用 Task 或基于 ValueTask的方法 ReadAsyncWriteAsync

NetworkStream 不支持对网络数据流的随机访问。 指示流是否支持查找的 CanSeek 属性的值始终 false;读取 Position 属性、读取 Length 属性或调用 Seek 方法将引发 NotSupportedException

可以在 NetworkStream 类的实例上同时执行读取和写入操作,而无需同步。 只要写入操作有一个唯一线程,并且读取操作有一个唯一线程,读取和写入线程之间就不会有交叉干扰,并且不需要同步。

构造函数

NetworkStream(Socket)

为指定的 Socket创建 NetworkStream 类的新实例。

NetworkStream(Socket, Boolean)

使用指定的 Socket 所有权初始化指定 SocketNetworkStream 类的新实例。

NetworkStream(Socket, FileAccess)

为具有指定访问权限的指定 Socket 创建 NetworkStream 类的新实例。

NetworkStream(Socket, FileAccess, Boolean)

为具有指定访问权限和指定 Socket 所有权的指定 Socket 创建 NetworkStream 类的新实例。

属性

CanRead

获取一个值,该值指示 NetworkStream 是否支持读取。

CanSeek

获取一个值,该值指示流是否支持查找。 目前不支持此属性。 此属性始终返回 false

CanTimeout

指示超时属性是否可用于 NetworkStream

CanTimeout

获取一个值,该值确定当前流是否可以超时。

(继承自 Stream)
CanWrite

获取一个值,该值指示 NetworkStream 是否支持写入。

DataAvailable

获取一个值,该值指示 NetworkStream 上是否有数据可供立即读取。

Length

获取流上可用的数据的长度。 此属性当前不受支持,并且始终引发 NotSupportedException

Position

获取或设置流中的当前位置。 此属性当前不受支持,并且始终引发 NotSupportedException

Readable

获取或设置一个值,该值指示是否可以读取 NetworkStream

ReadTimeout

获取或设置读取操作阻止等待数据的时间量。

ReadTimeout

获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试读取的时间。

(继承自 Stream)
Socket

获取基础 Socket

Writeable

获取一个值,该值指示 NetworkStream 是否可写。

WriteTimeout

获取或设置写入操作阻止等待数据的时间量。

WriteTimeout

获取或设置一个值(以毫秒为单位),该值确定流在超时之前尝试写入的时间。

(继承自 Stream)

方法

BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

NetworkStream开始异步读取。

BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

开始异步读取操作。 (请考虑改用 ReadAsync(Byte[], Int32, Int32)

(继承自 Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

开始对流进行异步写入。

BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

开始异步写入操作。 (请考虑改用 WriteAsync(Byte[], Int32, Int32)

(继承自 Stream)
Close()

关闭 NetworkStream

Close()

关闭当前流并释放与当前流关联的任何资源(如套接字和文件句柄)。 请确保流已正确释放,而不是调用此方法。

(继承自 Stream)
Close(Int32)

在等待指定时间后关闭 NetworkStream,以允许发送数据。

Close(TimeSpan)

在等待指定时间量以允许发送数据后关闭 NetworkStream

CopyTo(Stream)

从当前流中读取字节并将其写入另一个流。 这两个流位置都是按复制的字节数进行高级的。

(继承自 Stream)
CopyTo(Stream, Int32)

从当前流中读取字节,并使用指定的缓冲区大小将其写入另一个流。 这两个流位置都是按复制的字节数进行高级的。

(继承自 Stream)
CopyToAsync(Stream)

从当前流异步读取字节并将其写入另一个流。 这两个流位置都是按复制的字节数进行高级的。

(继承自 Stream)
CopyToAsync(Stream, CancellationToken)

使用指定的取消标记异步读取当前流中的字节并将其写入另一个流。 这两个流位置都是按复制的字节数进行高级的。

(继承自 Stream)
CopyToAsync(Stream, Int32)

使用指定的缓冲区大小异步读取当前流中的字节并将其写入另一个流。 这两个流位置都是按复制的字节数进行高级的。

(继承自 Stream)
CopyToAsync(Stream, Int32, CancellationToken)

使用指定的缓冲区大小和取消令牌异步读取当前流中的字节并将其写入另一个流。 这两个流位置都是按复制的字节数进行高级的。

(继承自 Stream)
CreateObjRef(Type)

创建一个对象,其中包含生成用于与远程对象通信的代理所需的所有相关信息。

(继承自 MarshalByRefObject)
CreateWaitHandle()
已过时.
已过时.
已过时.

分配 WaitHandle 对象。

(继承自 Stream)
Dispose()

释放 Stream使用的所有资源。

(继承自 Stream)
Dispose(Boolean)

释放 NetworkStream 使用的非托管资源,并选择性地释放托管资源。

DisposeAsync()

异步释放 Stream使用的非托管资源。

(继承自 Stream)
EndRead(IAsyncResult)

处理异步读取的末尾。

EndRead(IAsyncResult)

等待挂起的异步读取完成。 (请考虑改用 ReadAsync(Byte[], Int32, Int32)

(继承自 Stream)
EndWrite(IAsyncResult)

处理异步写入的末尾。

EndWrite(IAsyncResult)

结束异步写入操作。 (请考虑改用 WriteAsync(Byte[], Int32, Int32)

(继承自 Stream)
Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
Finalize()

释放 NetworkStream使用的所有资源。

Flush()

刷新流中的数据。 此方法保留供将来使用。

FlushAsync()

异步清除此流的所有缓冲区,并导致任何缓冲数据写入基础设备。

(继承自 Stream)
FlushAsync(CancellationToken)

以异步操作的形式刷新流中的数据。

FlushAsync(CancellationToken)

异步清除此流的所有缓冲区,导致任何缓冲数据写入基础设备,并监视取消请求。

(继承自 Stream)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetLifetimeService()
已过时.

检索控制此实例的生存期策略的当前生存期服务对象。

(继承自 MarshalByRefObject)
GetType()

获取当前实例的 Type

(继承自 Object)
InitializeLifetimeService()
已过时.

获取生存期服务对象来控制此实例的生存期策略。

(继承自 MarshalByRefObject)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
MemberwiseClone(Boolean)

创建当前 MarshalByRefObject 对象的浅表副本。

(继承自 MarshalByRefObject)
ObjectInvariant()
已过时.

Contract提供支持。

(继承自 Stream)
Read(Byte[], Int32, Int32)

NetworkStream 读取数据并将其存储到字节数组。

Read(Span<Byte>)

NetworkStream 读取数据并将其存储在内存中的字节范围。

Read(Span<Byte>)

在派生类中重写时,从当前流中读取字节序列,并通过读取的字节数推进流中的位置。

(继承自 Stream)
ReadAsync(Byte[], Int32, Int32)

从当前流异步读取字节序列,并通过读取的字节数推进流中的位置。

(继承自 Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

NetworkStream 读取数据,并将其存储到字节数组的指定范围作为异步操作。

ReadAsync(Byte[], Int32, Int32, CancellationToken)

从当前流异步读取字节序列,按读取的字节数推进流中的位置,并监视取消请求。

(继承自 Stream)
ReadAsync(Memory<Byte>, CancellationToken)

NetworkStream 读取数据,并将其作为异步操作存储在字节内存范围内。

ReadAsync(Memory<Byte>, CancellationToken)

从当前流异步读取字节序列,按读取的字节数推进流中的位置,并监视取消请求。

(继承自 Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

至少从当前流中读取最小字节数,并通过读取的字节数提升流中的位置。

(继承自 Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

异步读取当前流的最小字节数,按读取的字节数推进流中的位置,并监视取消请求。

(继承自 Stream)
ReadByte()

NetworkStream 读取字节并将流中的位置向前推进一个字节,或者返回 -1(如果位于流末尾)。

ReadByte()

从流中读取字节,并将流中的位置向前推进一个字节,或者在流末尾返回 -1。

(继承自 Stream)
ReadExactly(Byte[], Int32, Int32)

从当前流中读取 count 字节数,并提升流中的位置。

(继承自 Stream)
ReadExactly(Span<Byte>)

从当前流中读取字节,并在填充 buffer 之前推进流中的位置。

(继承自 Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

从当前流异步读取 count 字节数,推进流中的位置,并监视取消请求。

(继承自 Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

从当前流异步读取字节,在填充 buffer 之前先行流中的位置,并监视取消请求。

(继承自 Stream)
Seek(Int64, SeekOrigin)

将流的当前位置设置为给定值。 此方法目前不受支持,并且始终引发 NotSupportedException

SetLength(Int64)

设置流的长度。 此方法始终引发 NotSupportedException

ToString()

返回一个表示当前对象的字符串。

(继承自 Object)
Write(Byte[], Int32, Int32)

将数据从字节数组的指定范围写入 NetworkStream

Write(ReadOnlySpan<Byte>)

将数据从只读字节范围写入 NetworkStream

Write(ReadOnlySpan<Byte>)

在派生类中重写时,将字节序列写入当前流,并通过写入的字节数推进此流中的当前位置。

(继承自 Stream)
WriteAsync(Byte[], Int32, Int32)

以异步方式将字节序列写入当前流,并通过写入的字节数推进此流中的当前位置。

(继承自 Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

将数据作为异步操作从字节数组的指定范围写入 NetworkStream

WriteAsync(Byte[], Int32, Int32, CancellationToken)

将字节序列异步写入当前流,按写入的字节数推进此流中的当前位置,并监视取消请求。

(继承自 Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

将数据作为异步操作从只读内存字节内存范围写入 NetworkStream

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

将字节序列异步写入当前流,按写入的字节数推进此流中的当前位置,并监视取消请求。

(继承自 Stream)
WriteByte(Byte)

将字节写入 NetworkStream 中的当前位置,并将流中的位置向前推进一个字节。

WriteByte(Byte)

将字节写入流中的当前位置,并将流中的位置向前推进一个字节。

(继承自 Stream)

显式接口实现

IDisposable.Dispose()

此 API 支持产品基础结构,不能在代码中直接使用。

释放 NetworkStream使用的所有资源。

扩展方法

CopyToAsync(Stream, PipeWriter, CancellationToken)

使用取消令牌从 Stream 异步读取字节并将其写入指定的 PipeWriter

ConfigureAwait(IAsyncDisposable, Boolean)

配置如何执行从异步可释放项返回的任务的 await。

适用于

另请参阅