Socket.SendToAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
SendToAsync(SocketAsyncEventArgs) |
以异步方式将数据发送到特定远程主机。 |
SendToAsync(ArraySegment<Byte>, EndPoint) |
将数据发送到指定的远程主机。 |
SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint) |
将数据发送到指定的远程主机。 |
SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken) |
将数据发送到指定的远程主机。 |
SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken) |
将数据发送到指定的远程主机。 |
SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken) |
使用指定的 SocketFlags,将数据发送到特定的终结点。 |
SendToAsync(SocketAsyncEventArgs)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
以异步方式将数据发送到特定远程主机。
public:
bool SendToAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendToAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendToAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendToAsync (e As SocketAsyncEventArgs) As Boolean
参数
要用于此异步套接字操作的 SocketAsyncEventArgs 对象。
返回
如果 I/O 操作挂起,则为 true
。 操作完成时,将引发 e
参数的 Completed 事件。
如果 I/O 操作同步完成,则为 false
。 在这种情况下,将不会引发 e
参数的 Completed 事件,并且可能在方法调用返回后立即检查作为参数传递的 e
对象以检索操作的结果。
例外
RemoteEndPoint 不能为 null。
已经在使用 e
参数中指定的 SocketAsyncEventArgs 对象执行套接字操作。
指定的协议是面向连接的,但 Socket 尚未连接。
注解
方法 SendToAsync 启动对 参数 的 属性中指定的 SocketAsyncEventArgs.RemoteEndPoint 远程主机的 e
异步发送操作。
SendToAsync通过调用 方法,可以在单独的执行线程内发送数据。 虽然此方法适用于无连接协议, SendToAsync 但适用于无连接协议和面向连接的协议。
若要收到完成通知,必须创建实现 EventHandler<SocketAsyncEventArgs> 委托的回调方法,并将回调附加到 SocketAsyncEventArgs.Completed 事件。
对象上的 System.Net.Sockets.SocketAsyncEventArgs 以下属性和事件是成功调用此方法所必需的:
调用方可以在调用 SendToAsync 方法之前将 属性设置为SocketAsyncEventArgs.UserToken所需的任何用户状态对象,以便在回调方法中检索信息。 如果回调需要比单个对象更多的信息,则可以创建一个小类来保存其他所需的状态信息作为成员。
如果使用面向连接的协议,则必须首先调用 Accept、、AcceptAsync、BeginAcceptBeginConnect、 Connect或 ConnectAsync 方法。 否则 SendToAsync 将引发 SocketException。 使用面向连接的协议时,SendToAsync方法将忽略 属性,SocketAsyncEventArgs.RemoteEndPoint并将数据发送到System.Net.EndPoint在 、、AcceptAsync、BeginAcceptBeginConnect、 Connect或 ConnectAsync 方法中Accept建立的 。
如果使用无连接协议,则无需在调用 SendToAsync之前使用 BeginConnect、 Connect或 ConnectAsync 方法建立默认远程主机。 仅当打算调用 BeginSend 或 SendAsync 方法时,才需要执行此操作。 如果在调用 之前SendToAsync调用 BeginConnect、 Connect或 ConnectAsync 方法,则 SocketAsyncEventArgs.RemoteEndPoint 属性将仅覆盖该发送操作的指定默认远程主机。 也不需要调用 Bind 方法。 在这种情况下,基础服务提供商将分配最合适的本地网络 IP 地址和端口号。 如果希望基础服务提供商选择可用端口,请使用零端口号。 如果需要标识分配的本地网络 IP 地址和端口号,可以在发出事件信号并调用关联的委托后SocketAsyncEventArgs.Completed使用 LocalEndPoint 属性。
如果要将数据发送到广播地址,必须首先调用 SetSocketOption 方法并将 的 SocketOptionName.Broadcast 套接字选项设置为 true。 还必须确保缓冲区的大小不超过基础服务提供商的最大数据包大小。 如果存在,则不会发送数据报,并且 SendToAsync 会引发 SocketException。
如果在 属性中 SocketAsyncEventArgs.SocketFlags 指定 DontRoute 标志,则不会路由要发送的数据。
对于面向消息的套接字,必须注意不要超过基础传输的最大消息大小。 如果缓冲区的大小超过基础服务提供程序的最大数据包大小,则不会发送数据报,并且 SendToAsync 将引发 SocketException。 方法的 SendToAsync 成功完成并不表示数据已成功传递。
另请参阅
适用于
SendToAsync(ArraySegment<Byte>, EndPoint)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
将数据发送到指定的远程主机。
public:
System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync (ArraySegment<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), remoteEP As EndPoint) As Task(Of Integer)
参数
- buffer
- ArraySegment<Byte>
要发送的数据的缓冲区。
- remoteEP
- EndPoint
要向其发送数据的远程主机。
返回
以发送的字节数完成的异步任务。
例外
remoteEP
为 null
。
尝试访问套接字时出错。
适用于
SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
将数据发送到指定的远程主机。
public:
System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Task(Of Integer)
参数
- buffer
- ArraySegment<Byte>
要发送的数据的缓冲区。
- socketFlags
- SocketFlags
在发送数据时将使用的 SocketFlags 值的按位组合。
- remoteEP
- EndPoint
要向其发送数据的远程主机。
返回
以发送的字节数完成的异步任务。
例外
remoteEP
为 null
。
尝试访问套接字时出错。
适用于
SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
将数据发送到指定的远程主机。
public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), remoteEP As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
参数
- buffer
- ReadOnlyMemory<Byte>
要发送的数据的缓冲区。
- remoteEP
- EndPoint
要向其发送数据的远程主机。
- cancellationToken
- CancellationToken
可用于取消异步操作的取消标记。
返回
以发送的字节数完成的异步任务。
例外
remoteEP
为 null
。
尝试访问套接字时出错。
取消令牌已取消。 此异常存储在返回的任务中。
适用于
SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
将数据发送到指定的远程主机。
public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
参数
- buffer
- ReadOnlyMemory<Byte>
要发送的数据的缓冲区。
- socketFlags
- SocketFlags
在发送数据时将使用的 SocketFlags 值的按位组合。
- remoteEP
- EndPoint
要向其发送数据的远程主机。
- cancellationToken
- CancellationToken
可用于取消异步操作的取消标记。
返回
以发送的字节数完成的异步任务。
例外
remoteEP
为 null
。
尝试访问套接字时出错。
取消令牌已取消。 此异常存储在返回的任务中。
适用于
SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
使用指定的 SocketFlags,将数据发送到特定的终结点。
public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
参数
- buffer
- ReadOnlyMemory<Byte>
要发送的数据的缓冲区。
- socketFlags
- SocketFlags
发送数据时将使用的值的 SocketFlags 按位组合。
- socketAddress
- SocketAddress
SocketAddress,它表示数据的目标位置。
- cancellationToken
- CancellationToken
可用于取消异步操作的取消标记。
返回
以发送的字节数完成的异步任务。
例外
socketAddress
为 null
。
尝试访问套接字时出错。
取消令牌已取消。 此异常存储在返回的任务中。