socket连接返回错误码

10035—WSAEWOULDBLOCK  
      资源暂时不可用。对非锁定套接字来说,如果请求操作不能立即执行的话,通常会返回这个错误。比如说,在一个非暂停套接字上调用 connect,就会返回这个错误。因为连接请求不能立即执行。  

      10037—WSAEALREADY  
操作已完成。一般来说,在非锁定套接字上尝试已处于进程中的操作时,会产生这个错误。比如,在一个已处于连接进程的非锁定套接字上,再一次调用 connect 或 WSAConnect。另外,服务提供者处于执行回调函数(针对支持回调例程的 Winsock函数)的进程中时,也会出现这个错误。  
 
应用层socket接收数据:
     1、内核copy数据到socket接收缓冲区
     2、应用程序调用recv,copy socket接收缓冲数据到应用进程。
 
应用socket发送数据:
    1、应用调用send copy数据到socket发送缓冲区,
    2、内核维护socket缓冲区通过IP协议发出数据

 

连接对应关系:

注: accept 只是从内核取出可以已完成握手(建立连接)的队列中取出一个连接响应,表示应用层完成tcp连接。

10035处理->

部分解决方案1:

在client连接服务器过程中,如果处于非阻塞模式下的socket在connect()的过程中可
以设置connect()延时,直到accpet()被呼叫,本函数设置只有在非阻塞的过程中有显著的
作用,在阻塞的函数调用中作用不大)BOOL bAccept=TRUE;

setsockopt(s,SOL_SOCKET,SO_CONDITIONAL_ACCEPT,(const char*)&bAccept,sizeof(BOOL));

部分解决方案2:

待续....


 

转载于:https://my.oschina.net/u/727148/blog/481418

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值