Socket.EndSendTo 方法

结束挂起的、向指定位置进行的异步发送。

**命名空间:**System.Net.Sockets
**程序集:**System(在 system.dll 中)

语法

声明
Public Function EndSendTo ( _
    asyncResult As IAsyncResult _
) As Integer
用法
Dim instance As Socket
Dim asyncResult As IAsyncResult
Dim returnValue As Integer

returnValue = instance.EndSendTo(asyncResult)
public int EndSendTo (
    IAsyncResult asyncResult
)
public:
int EndSendTo (
    IAsyncResult^ asyncResult
)
public int EndSendTo (
    IAsyncResult asyncResult
)
public function EndSendTo (
    asyncResult : IAsyncResult
) : int

参数

  • asyncResult
    IAsyncResult,它存储此异步操作的状态信息以及所有用户定义数据。

返回值

如果成功,则返回已发送的字节数;否则会返回无效 Socket 错误。

异常

异常类型 条件

ArgumentNullException

asyncResult 为 空引用(在 Visual Basic 中为 Nothing)。

ArgumentException

BeginSendTo 方法调用未返回 asyncResult。

InvalidOperationException

先前为异步发送已调用过 EndSendTo

SocketException

试图访问套接字时发生错误。有关更多信息,请参见备注部分。

ObjectDisposedException

Socket 已关闭。

备注

EndSendTo 完成在 BeginSendTo 中启动的异步发送操作。

在调用 BeginSendTo 之前,需创建一个实现 AsyncCallback 委托的回调方法。该回调方法在单独的线程中执行并在 BeginReceive 返回后由系统调用。回调方法必须接受 BeginSendTo 方法所返回的 IAsyncResult 作为参数。

在回调方法中,调用 IAsyncResult 参数的 AsyncState 方法可以获取发送 Socket。在获取 Socket 之后,则可以调用 EndSendTo 方法以成功完成发送操作,并返回发送的字节数。

如果您使用的是无连接协议,则 EndSendTo 将一直阻止到发送完数据报为止。如果您使用的是面向连接的协议,则 EndSendTo 将一直阻止到发送完所请求的字节数为止。不能保证您发送的数据将会立即出现在网络上。为提高网络效率,基础系统可能会延迟传输,直到收集了足够多的传出数据后才开始发送。BeginSendTo 方法的成功完成意味着基础系统有空间来缓冲用于网络发送的数据。

提示

如果收到 SocketException,请使用 SocketException.ErrorCode 属性获取特定的错误代码。获取此代码后,您可以参考 MSDN Library 中的 Windows Sockets 第 2 版 API 错误代码文档,获取有关该错误的详细说明。

提示

当在应用程序中启用网络跟踪功能后,此成员将输出跟踪信息。有关更多信息,请参见 网络跟踪

示例

下面的代码示例结束向特定位置进行的异步发送。

   Dim so As StateObject = CType(ar.AsyncState, StateObject)
   Dim s As Socket = so.workSocket
   
   Dim send As Integer = s.EndSendTo(ar)
   
   Console.WriteLine(("The size of the message sent was :" + send.ToString()))
   
   s.Close()
End Sub 'SendTo_Callback
StateObject so = (StateObject) ar.AsyncState;
Socket s = so.workSocket;

int send = s.EndSendTo(ar);

   Console.WriteLine("The size of the message sent was :" + send.ToString());

s.Close();
StateObject^ so = safe_cast<StateObject^>(ar->AsyncState);
Socket^ s = so->workSocket;

int send = s->EndSendTo( ar );

Console::WriteLine( "The size of the message sent was : {0}", send );

s->Close();
StateObject so = (StateObject)ar.get_AsyncState();
Socket s = so.workSocket;
int send = s.EndSendTo(ar);
Console.WriteLine("The size of the message sent was :"
    + ((Int32)send).ToString());
s.Close();

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

Socket 类
Socket 成员
System.Net.Sockets 命名空间