概述
connect函数
错误返回类型:
Linux下:
EBADF:参数socket未指定一个合法的描述符
ENOTSOCK 参数socket未指定一个套接字描述符
EAFNOSUPPORT 远程端点指定的地址族不能与这种类型的套接字一起使用
EADDRNOTAVAIL:指定的地址不可用
EISCONN:套接字已被连接
ETIMEDOUT:(只用于TCP)协议因未成功建立一个连接而超时
ECONNREFUSED:(只用于TCP)连接被远程机器拒绝
ENETUNREACH:(只用于TCP)网络当前不可到达
EADDRINUSE:指定的地址正在使用
EINPROGRESS:(只用于TCP)套接字是非阻塞的,且一个连接尝试将被阻塞
EALREADY:(只用于TCP)套接字是非阻塞的,且调用将等待前一个连接尝试完成
connect超时设置
虽然内核参数有超时设置,但是超时时间太长,手动改内核参数不太现实。这里运用select结合非阻塞设置超时如下:
1. 将套接字设置非阻塞
fcntl(sock_fd,F_SETFL,fcntl(sock_fd,F_GETFL,0)|O_NONBLOCK););
2. 调用connect函数,判断返回值
3. 若返回值为-1,若错误类型是EINPROGRESS,监听套接字的可写状态,调用select监听是否超时。
4. 若继续进行send,recv最好将套接字设置为阻塞。
最后
以上就是曾经路人为你收集整理的connect函数 超时设置和错误码connect函数的全部内容,希望文章能够帮你解决connect函数 超时设置和错误码connect函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复