int flags);参数ss如果没有发生错误并且发送操作立即完成,WSASend()函数将返回0 。此时,CompletionRoutine应该已经被调度,一旦调用线程处于alertable状态,就会调用它 , 否则返回SOCKET_ERROR,通过WSAGetLastError获取详细的错误代码 , 错误代码WSA_IO_PENDING(其实是指没有错误)表示重叠操作已经提交成功(表示异步IO) , 后面会提示完成(这个完成不一定是传输成功,也不一定是问题) 。
1、socket编程中recvfrom没有收到 udp包(如网络不通时 recvfrom()返回在没有错误发生的情况下读取的字节数 。如果连接已中止,则返回0 。否则返回SOCKET_ERROR错误 , 应用程序可以通过WSAGetLastError()获取相应的错误代码 。错误代码:wsanotinialized:wsa startup()应该在使用此API之前成功调用 。WSAENETDOWN:WINDOWS的WINDOWS套接字实现检测到网络子系统失败 。
WSAEINTR:阻塞进程被WSACancelBlockingCall()取消 。WSAEINPROGRESS:被阻止的WINDOWS windows套接字调用正在运行 。WSAEINVAL: windows套接字未使用bind()绑定 。WSAENOTCONN:未连接windows套接字(仅适用于SOCK_STREAM类型) 。WSAENOTSOCK:描述符不是windows套接字 。
2、socket的send(thisfunctionsendsdataonaconnectedsocket . int send(SOCKETs,constcharFAR * buf,intlen , int flags);Parameterss简要描述向连接的windows套接字发送数据 。# includeintPASCALFARsend(SOCKETs , constcharFAR*buf,intlen,int flags);s:一个描述符,用于标识连接的windows套接字 。缓冲区:包含要发送数据的缓冲区 。Len:缓冲区中数据的长度 。标志:调用执行模式 。注意send()适用于连接的数据包或流式windows套接字数据 。
【enet udp 分析】IP数据包的最大长度在WSAStartup()调用返回的WSAData的iMaxUdpDg元素中 。如果数据太长而无法自动通过较低层协议,则会返回WSAEMSGSIZE错误,并且不会发送数据,请注意,send()调用的成功完成并不意味着数据传输已经到达 。如果传输系统的缓冲区空间不足以容纳要传输的数据,send()将会阻塞 , 除非windows sockets处于非阻塞I/O模式 。
推荐阅读
- 网易云讯是个什么软件,云信客服电话
- 动易网站管理系统 动易连接mysql数据库
- KV-85重型战车?苏联KV-85坦克为何生不逢时?相比于其他重型坦克,
- 国际象棋电脑版下载,vistar 国际象棋哪里有的下载
- mysql如果为空值显示为0 mysql怎么空值
- 土豆视频app,土豆直播
- mysql取前三 mysql取文本前
- epoll分析,Epoll原理
- 对讲机电路分析,MC3361对讲机电路