CAsyncSocket::SendTo

调用该成员函数的数据发送到特定目标。

int SendTo(
   const void* lpBuf,
   int nBufLen,
   UINT nHostPort,
   LPCTSTR lpszHostAddress = NULL,
   int nFlags = 0 
);
int SendTo(
   const void* lpBuf,
   int nBufLen,
   const SOCKADDR* lpSockAddr,
   int nSockAddrLen,
   int nFlags = 0 
);

参数

  • lpBuf
    包含数据的缓冲区将传输。

  • nBufLen
    数据的长度。lpBuf 的以字节为单位)。

  • nHostPort
    标识套接字应用程序的端口。

  • lpszHostAddress
    此对象与套接字的网络地址:一个计算机名称(例如“ftp.microsoft.com,”或一个虚线的数字(如“128.56.22.8”。

  • nFlags
    指定调用了的方式。 套接字选项和参数 nFlags 依赖于此函数语义。 后者将以下值中的任何一个构造与C++ OR 运算符:

    • MSG_DONTROUTE 指定数据不应由路由。 Windows套接字供应商可以选择忽略此标志。

    • MSG_OOB 发送带外数据(仅SOCK_STREAM )。

  • lpSockAddr
    对包含目标套接字地址的 SOCKADDR 结构的指针。

  • nSockAddrLen
    地址的长度。lpSockAddr 的以字节为单位)。

返回值

如果未发生错误,SendTo 返回发送字符的总数。 (请注意这比 nBufLen表示的数字可以小于。)否则,SOCKET_ERROR 的值返回,并且,特定错误代码可以通过调用 GetLastError检索。 下面的错误适用于此成员函数:

  • WSANOTINITIALISED 的成功的 AfxSocketInit 必须在使用此API之前发生。

  • WSAENETDOWN Windows套接字实现检测网络子系统失败。

  • WSAEACCES 请求的地址是广播地址,但是,适当的标志尚未设置。

  • 块Windows套接字操作的WSAEINPROGRESS 的进度中。

  • WSAEFAULTlpBuf 或 lpSockAddr 参数不是用户地址空间的一部分,或者 lpSockAddr 参数太小(小于 SOCKADDR 结构的范围)。

  • WSAEINVAL 主机名无效。

  • WSAENETRESET 连接,因为Windows套接字实现丢弃它,必须重新设置。

  • WSAENOBUFS Windows套接字实现报告缓冲区死锁。

  • WSAENOTCONN 套接字未连接(仅SOCK_STREAM )。

  • WSAENOTSOCK 描述符不是套接字。

  • WSAEOPNOTSUPP   MSG_OOB 指定了,但是,套接字不是类型 SOCK_STREAM

  • WSAESHUTDOWN 套接字已关闭;,在 ShutDown 调用具有 nHow 设置为1或2.后,调用套接字的 SendTo 是不可能的。

  • WSAEWOULDBLOCK 套接字标记为未占用,并请求的操作将阻止。

  • WSAEMSGSIZE 套接字是类型 SOCK_DGRAM,这样,个数据进行大于Windows套接字实现支持的最大值。

  • WSAECONNABORTED 虚拟电路中止的是由于超时或其他故障。

  • 虚拟电路远程重置WSAECONNRESET

  • WSAEADDRNOTAVAIL 所指定的地址从本地计算机不可用。

  • 在指定的系列的WSAEAFNOSUPPORT 地址不能对该套接字。

  • WSAEDESTADDRREQ 一个需要目标地址。

  • WSAENETUNREACH 网络无法从目前的宿为止。

备注

SendTo 在数据图形或流套接字使用和用于有关套接字编写传出数据。 对数据进行套接字,必须注意不要超过基础子网的最大IP包大小,由 AfxSocketInit填写的 WSADATA 结构的 iMaxUdpDg 元素指定。 如果数据名称太长而无法通过基本基础协议,该错误 WSAEMSGSIZE 返回,并且,数据不会传输。

请注意 SendTo 的成功完成不指示成功提供了该数据。

SendToSOCK_DGRAM 套接字仅用于发送数据进行到 lpSockAddr 参数标识的特定套接字。

若要发送广播的(仅 SOCK_DGRAM ),应在构造 lpSockAddr 参数的地址使用特定IP地址 INADDR_BROADCAST (定义在Windows套接字标头文件WINSOCK.H)具有所需的端口号。 或者,如果 lpszHostAddress 参数是 NULL,套接字为广播配置。 超过碎片会发生,提示大小一个广播的数据进行通常不妥当的一个数据进行的数据部分(除外标头)不应超过512个字节。

处理IPv6地址,请使用 CAsyncSocket::SendToEx

要求

Header: afxsock.h

请参见

参考

CAsyncSocket选件类

层次结构图

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::Send