linux socket nonblocking connect && redis

问题描述

linux socket nonblocking connect && redis
    if (connect(s,p->ai_addr,p->ai_addrlen) == -1) {
        if (errno == EHOSTUNREACH) {
            redisContextCloseFd(c);
            continue;
        } else if (errno == EINPROGRESS && !blocking) {
            /* This is ok. */  //问题1
        } else if (errno == EADDRNOTAVAIL && reuseaddr) {
            if (++reuses >= REDIS_CONNECT_RETRIES) {
                goto error;
            } else {
                goto addrretry;
            }
        } else {
            if (redisContextWaitReady(c,c->timeout) != REDIS_OK) //问题2
                goto error;
        }
    }

            以上是hiredis客户端net.c的代码片段,有2个疑问,请高手解决一下
            问题一,非阻塞三次握手不需要去判断3次握手是否完成吗,unix网络编程我记得是要select判断的
            问题二,这种情形式发生在 connect是阻塞模式,但socket设置为非阻塞发生的吗

解决方案

Linux socket connect
[Linux]关于非阻塞socket调用connect

时间: 2024-10-31 08:42:04

linux socket nonblocking connect && redis的相关文章

Linux Socket编程获取服务器时间

客户端向服务器端发送请求,服务器收到请求做相应的处理,将处理结果传回客户端.下面采用TCP协议实现服务器和客户端之间的连接. 1. 客户端 约定双方的传输协议(UDP或者TCP),根据传输协议创建socket: 服务器的IP地址和端口号: 连接服务器: 获取服务器传递回来的数据. #include<string.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/time.h> #i

【Linux网络】Linux Socket编程 TCP协议

话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: 1.网络中进程之间如何通信? 本地的进程间通信(IPC)有很多种

关于linux socket描述符

问题描述 关于linux socket描述符 我在一个进程间用socket获得connect连接过来client的连接套接字描述,比如为6,那么我在其他进程中可以用6这个描述符与client进行通信吗? 解决方案 http://www.jb51.net/LINUXjishu/342875.html 解决方案二: 可以的,只要找一种方式,将套接字描述符给你想用的进程,他就可以拿它去跟你已经连接着的另一端(client)进行通信. 解决方案三: unix域协议在进程间传递文件描述符 解决方案四: 对

linux socket高性能服务器处理框架

思考一种高性能的服务器处理框架 1.首先需要一个内存池,目的在于: ·减少频繁的分配和释放,提高性能的同时,还能避免内存碎片的问题: ·能够存储变长的数据,不要很傻瓜地只能预分配一个最大长度: ·基于SLAB算法实现内存池是一个好的思路:分配不同大小的多个块,请求时返回大于请求长度的最小块即可,对于容器而言,处理固定块的分配和回收,相当 容易实现.当然,还要记得需要设计成线程安全的,自旋锁比较好,使用读写自旋锁就更好了. ·分配内容的增长管理是一个问题,比如第一次需要1KB空间,随着数据源源不断

linux socket编程初认识

  学习是分享和合作式的! 转载请注明出处:http://blog.csdn.net/wdzxl198/article/details/10472999: 直接进入主题:           socket起源于Unix,而Unix/Linux基本哲学之一就是"一切皆文件",都可以用"打开open –> 读写write/read –> 关闭close"模式来操作.我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket

详解Linux Socket编程(不限Linux)_Linux

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: 1.网络中进程之间如何通信? 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和

Linux Socket编程(不限Linux)【转】

转自:http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html "一切皆Socket!" 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socke

虚拟机-linux socket 通信问题 ?

问题描述 linux socket 通信问题 ? 我在2两台虚拟机上分别运行linux 服务端和客服端socket程序,客户端和服务端能正常通信,但是我用wireshark 抓包时确没抓到有这两个虚拟机的通信包,请问高手们这个是啥情况?? 解决方案 同一台电脑虚拟网卡直接走的内存(驱动程序级),没有走网卡,所以抓不到数据.

网络编程-Linux socket udp发送数据返回socket错误22

问题描述 Linux socket udp发送数据返回socket错误22 linux下用c网络编程用sendto发送数据,总返回socket error代号22是什么错误呢? 解决方案 http://blog.csdn.net/dog250/article/details/9569855