CAsyncSocket::Send
调用该成员函数发送有关已连接的套接字的数据。
virtual int Send(
const void* lpBuf,
int nBufLen,
int nFlags = 0
);
参数
lpBuf
包含数据的缓冲区将传输。nBufLen
数据的长度。lpBuf 的以字节为单位)。nFlags
指定调用了的方式。 套接字选项和参数 nFlags 依赖于此函数语义。 后者将以下值中的任何一个构造与C++ OR 运算符:MSG_DONTROUTE 指定数据不应由路由。 Windows套接字供应商可以选择忽略此标志。
MSG_OOB 发送带外数据(仅SOCK_STREAM )。
返回值
如果未发生错误,Send 返回发送字符的总数。 (请注意这比 nBufLen表示的数字可以小于。)否则,SOCKET_ERROR 的值返回,并且,特定错误代码可以通过调用 GetLastError检索。 下面的错误适用于此成员函数:
WSANOTINITIALISED 的成功的 AfxSocketInit 必须在使用此API之前发生。
WSAENETDOWN Windows套接字实现检测网络子系统失败。
WSAEACCES 请求的地址是广播地址,但是,适当的标志尚未设置。
块Windows套接字操作的WSAEINPROGRESS 的进度中。
WSAEFAULTlpBuf 参数不在用户地址空间的有效的部分。
WSAENETRESET 连接,因为Windows套接字实现丢弃它,必须重新设置。
WSAENOBUFS Windows套接字实现报告缓冲区死锁。
WSAENOTCONN 套接字未连接。
WSAENOTSOCK 描述符不是套接字。
WSAEOPNOTSUPP MSG_OOB 指定了,但是,套接字不是类型 SOCK_STREAM。
WSAESHUTDOWN 套接字已关闭;,在 ShutDown 调用具有 nHow 设置为1或2.后,调用套接字的 Send 是不可能的。
WSAEWOULDBLOCK 套接字标记为未占用,并请求的操作将阻止。
WSAEMSGSIZE 套接字是类型 SOCK_DGRAM,这样,个数据进行大于Windows套接字实现支持的最大值。
WSAEINVAL 套接字尚未绑定与 Bind。
WSAECONNABORTED 虚拟电路中止的是由于超时或其他故障。
虚拟电路远程重置WSAECONNRESET。
备注
Send 用于有关连接的流或数据进行套接字编写传出数据。 对数据进行套接字,必须注意不要超过基础子网的最大IP包大小,由 AfxSocketInit返回的 WSADATA 结构的 iMaxUdpDg 元素指定。 如果数据名称太长而无法通过基本基础协议,该错误 WSAEMSGSIZE 通过 GetLastError返回,并且,数据不会传输。
请注意对数据进行套接字 Send 的成功完成不指示成功提供了该数据。
在类型 SOCK_STREAMCAsyncSocket 对象,编写的字节数可以在1和请求的长度之间,具体取决于在本地和外部宿主的缓冲区可用性。
示例
为 CAsyncSocket::OnSend参见示例。
要求
Header: afxsock.h