Socket.BeginSend 方法

定义

将数据异步发送到连接的 Socket

重载

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

将数据异步发送到连接的 Socket

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

将数据异步发送到连接的 Socket

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

将数据异步发送到连接的 Socket

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

将数据异步发送到连接的 Socket

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

将数据异步发送到连接的 Socket

public:
 IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult

参数

buffers
IList<ArraySegment<Byte>>

Byte 类型的数组,它包含要发送的数据。

socketFlags
SocketFlags

SocketFlags 值的按位组合。

callback
AsyncCallback

AsyncCallback 委托。

state
Object

包含此请求的状态信息的对象。

返回

引用异步发送的 IAsyncResult

例外

buffersnull

buffers 为空。

仅.NET Framework和 .NET 5 及更早版本:尝试访问套接字时出错。 请参见下面的备注部分。

注解

重要

这是一个兼容性 API。 不建议使用 APM (Begin*End*) 方法进行新开发。 请改用 Task基于 的等效项。

可以将实现的AsyncCallbackBeginSend回调传递给 ,以获取有关操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,将在调用 BeginSend期间内联执行回调。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true 以指示该方法同步完成。 AsyncState使用 的 IAsyncResult 属性获取传递给 BeginSend 方法的状态对象。

BeginSend异步操作必须通过调用 EndSend 方法完成。 通常,委托调用 AsyncCallback 方法。 EndSend 将阻止调用线程,直到操作完成。

虽然适用于面向连接的协议, BeginSend 但也适用于无连接协议,前提是首先调用 ConnectBeginConnect 方法来建立默认远程主机。 如果使用无连接协议并计划将数据发送到多个不同的主机,则应使用 BeginSendToBeginSendTo即使已使用 Connect建立了默认远程主机,也可以使用 。 还可以通过在Connect调用 BeginSendBeginConnect之前更改默认远程主机。 使用无连接协议时,还必须确保缓冲区的大小不超过基础服务提供程序的最大数据包大小。 如果存在,则不会发送数据报,并且 BeginSend 会引发 SocketException

如果将 标志指定 DontRoutesocketflags 参数,则不会路由要发送的数据。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。

注意

当给定线程退出时,将取消由给定线程启动的所有 I/O。 如果线程在操作完成之前退出,挂起的异步操作可能会失败。

注意

state 是用户定义的类的实例化。

注意

成功完成发送并不表示数据已成功传递。 如果传输系统中没有可用于保存要传输的数据的缓冲区空间,除非套接字已置于非阻止模式,否则发送将阻止。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

注意

为异步 Socket 方法缓存 (安全上下文、模拟用户和调用上下文) 的执行上下文。 第一次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。

另请参阅

适用于

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

将数据异步发送到连接的 Socket

public:
 IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult

参数

buffers
IList<ArraySegment<Byte>>

Byte 类型的数组,它包含要发送的数据。

socketFlags
SocketFlags

SocketFlags 值的按位组合。

errorCode
SocketError

一个 SocketError 对象,它存储套接字错误。

callback
AsyncCallback

AsyncCallback 委托。

state
Object

包含此请求的状态信息的对象。

返回

引用异步发送的 IAsyncResult

例外

buffersnull

buffers 为空。

仅.NET Framework和 .NET 5 及更早版本:尝试访问套接字时出错。 请参见下面的备注部分。

注解

重要

这是一个兼容性 API。 不建议使用 APM (Begin*End*) 方法进行新开发。 请改用 Task基于 的等效项。

可以将实现的AsyncCallbackBeginSend回调传递给 ,以获取有关操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,将在调用 BeginSend期间内联执行回调。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true 以指示该方法同步完成。 AsyncState使用 的 IAsyncResult 属性获取传递给 BeginSend 方法的状态对象。

BeginSend异步操作必须通过调用 EndSend 方法完成。 通常,委托调用 AsyncCallback 方法。 EndSend 将阻止调用线程,直到操作完成。

虽然适用于面向连接的协议, BeginSend 但也适用于无连接协议,前提是首先调用 ConnectBeginConnect 方法来建立默认远程主机。 如果使用无连接协议并计划将数据发送到多个不同的主机,则应使用 BeginSendToBeginSendTo即使已使用 Connect建立了默认远程主机,也可以使用 。 还可以通过在Connect调用 BeginSendBeginConnect之前更改默认远程主机。 使用无连接协议时,还必须确保缓冲区的大小不超过基础服务提供程序的最大数据包大小。 如果存在,则不会发送数据报,并且 BeginSend 会引发 SocketException

如果将 标志指定 DontRoutesocketflags 参数,则不会路由要发送的数据。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。

注意

当给定线程退出时,将取消由给定线程启动的所有 I/O。 如果线程在操作完成之前退出,挂起的异步操作可能会失败。

注意

state 是用户定义的类的实例化。

注意

成功完成发送并不表示数据已成功传递。 如果传输系统中没有可用于保存要传输的数据的缓冲区空间,除非套接字已置于非阻止模式,否则发送将阻止。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

注意

为异步 Socket 方法缓存执行上下文 (安全上下文、模拟用户和调用上下文) 。 首次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。

另请参阅

适用于

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

将数据异步发送到连接的 Socket

public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult

参数

buffer
Byte[]

Byte 类型的数组,它包含要发送的数据。

offset
Int32

buffer 参数中开始发送数据的位置,该位置从零开始计数。

size
Int32

要发送的字节数。

socketFlags
SocketFlags

SocketFlags 值的按位组合。

callback
AsyncCallback

AsyncCallback 委托。

state
Object

包含此请求的状态信息的对象。

返回

引用异步发送的 IAsyncResult

例外

buffernull

仅限 .NET Framework 和 .NET 5 及更早版本:尝试访问套接字时出错。 请参见下面的备注部分。

offset 小于 0。

- 或 -

offset 小于 buffer 的长度。

- 或 -

size 小于 0。

- 或 -

size 大于 buffer 的长度减去 offset 参数的值。

注解

重要

这是一个兼容性 API。 不建议使用 APM (Begin*End*) 方法进行新的开发。 请改用 Task基于 的等效项。

可以将实现 的AsyncCallbackBeginSend回调传递给 ,以获取有关操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,将在调用 BeginSend期间内联执行回调。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true 以指示方法同步完成。 AsyncState使用 的 IAsyncResult 属性获取传递给 BeginSend 方法的状态对象。

BeginSend异步操作必须通过调用 EndSend 方法来完成。 通常,委托会调用 AsyncCallback 方法。 EndSend 将阻止调用线程,直到操作完成。

虽然适用于面向连接的协议, BeginSend 但也适用于无连接协议,前提是首先调用 ConnectBeginConnect 方法来建立默认远程主机。 如果使用无连接协议并计划将数据发送到多个不同的主机,则应使用 BeginSendToBeginSendTo即使已使用 Connect建立了默认远程主机,也可以使用 。 还可以在调用 BeginSend 之前更改默认远程主机,方法是再次调用 ConnectBeginConnect。 使用无连接协议时,还必须确保缓冲区的大小不超过基础服务提供程序的最大数据包大小。 如果已发送,则不会发送数据报,并将 BeginSend 引发 SocketException

如果将 标志指定 DontRoutesocketflags 参数,则不会路由要发送的数据。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。

注意

当给定线程退出时,将取消由该线程发起的所有 I/O。 如果线程在操作完成之前退出,挂起的异步操作可能会失败。

注意

state 是用户定义的类的实例化。

注意

发送的成功完成并不表示数据已成功传递。 如果传输系统中没有可用于保存要传输的数据的缓冲区空间,除非套接字处于非阻止模式,否则发送将阻塞。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

注意

为异步 Socket 方法缓存执行上下文 (安全上下文、模拟用户和调用上下文) 。 首次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。

另请参阅

适用于

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

将数据异步发送到连接的 Socket

public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult

参数

buffer
Byte[]

Byte 类型的数组,它包含要发送的数据。

offset
Int32

buffer 参数中开始发送数据的位置,该位置从零开始计数。

size
Int32

要发送的字节数。

socketFlags
SocketFlags

SocketFlags 值的按位组合。

errorCode
SocketError

一个 SocketError 对象,它存储套接字错误。

callback
AsyncCallback

AsyncCallback 委托。

state
Object

包含此请求的状态信息的对象。

返回

引用异步发送的 IAsyncResult

例外

buffernull

仅限 .NET Framework 和 .NET 5 及更早版本:尝试访问套接字时出错。 请参见下面的备注部分。

offset 小于 0。

- 或 -

offset 小于 buffer 的长度。

- 或 -

size 小于 0。

- 或 -

size 大于 buffer 的长度减去 offset 参数的值。

注解

重要

这是一个兼容性 API。 不建议使用 APM (Begin*End*) 方法进行新的开发。 请改用 Task基于 的等效项。

可以将实现 的AsyncCallbackBeginSend回调传递给 ,以获取有关操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,将在调用 BeginSend期间内联执行回调。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true 以指示方法同步完成。 AsyncState使用 的 IAsyncResult 属性获取传递给 BeginSend 方法的状态对象。

BeginSend异步操作必须通过调用 EndSend 方法来完成。 通常,委托会调用 AsyncCallback 方法。 EndSend 将阻止调用线程,直到操作完成。

虽然适用于面向连接的协议, BeginSend 但也适用于无连接协议,前提是首先调用 ConnectBeginConnect 方法来建立默认远程主机。 如果使用无连接协议并计划将数据发送到多个不同的主机,则应使用 BeginSendToBeginSendTo即使已使用 Connect建立了默认远程主机,也可以使用 。 还可以在调用 BeginSend 之前更改默认远程主机,方法是再次调用 ConnectBeginConnect。 使用无连接协议时,还必须确保缓冲区的大小不超过基础服务提供程序的最大数据包大小。 如果已发送,则不会发送数据报,并将 BeginSend 引发 SocketException

如果将 标志指定 DontRoutesocketflags 参数,则不会路由要发送的数据。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。

注意

当给定线程退出时,将取消由给定线程启动的所有 I/O。 如果线程在操作完成之前退出,挂起的异步操作可能会失败。

注意

state 是用户定义的类的实例化。

注意

成功完成发送并不表示数据已成功传递。 如果传输系统中没有可用于保存要传输的数据的缓冲区空间,除非套接字已置于非阻止模式,否则发送将阻止。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

注意

为异步 Socket 方法缓存 (安全上下文、模拟用户和调用上下文) 的执行上下文。 第一次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。

另请参阅

适用于