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

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

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

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)

配置如何执行从异步可处置项返回的任务的等待。

适用于

另请参阅