我是靠谱客的博主 曾经路人,最近开发中收集的这篇文章主要介绍connect函数 超时设置和错误码connect函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部