- 论坛徽章:
- 0
|
- int AddClientSocketSet(...)
- {
- ....
- Err=connect(sock,(struct sockaddr *)&server,sizeof(server));
- if(Err){
- switch(errno){
- case EINPROGRESS:
- if(sock>*InMaxFd) *InMaxFd=sock;
- FD_SET(sock,InRSet);
- Err=sock;
- break;
- case ECONNREFUSED: /* Software caused connection abort */
- close(sock);
- break;
- default:
- close(sock);
- break;
- }
- }else {
- FD_SET(sock,InRSet);
- if(sock>*InMaxFd) *InMaxFd=sock;
- Err=sock;
- }
- return Err;
- }
复制代码 为了理解各个errno,我暂时把代表改成下面的,不知可不可以- connect(sock,(struct sockaddr *)&server,sizeof(server));
- switch(errno)
- {
- case EISCONN:
- FD_SET(sock,InRSet);
- if(sock>*InMaxFd) *InMaxFd=sock;
- Err=sock;
- break;
- case EINPROGRESS:
- if(sock>*InMaxFd) *InMaxFd=sock;
- FD_SET(sock,InRSet);
- Err=sock;
- break;
- case ECONNREFUSED: /* Software caused connection abort */
- close(sock);
- break;
- deflaut:
- close(sock);
- break;
- }
- return Err;
复制代码 问题:上面的EINPROGRESS状态下处理合理吗?EINPROGRESS这个状态会维持很长时间吗?总之就是遇到EINPROGRESS一般会如何处理,有什么秘籍没? |
|