博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis源码系列28:ServerSocket接收到client的连接请求处理过程
阅读量:6876 次
发布时间:2019-06-26

本文共 1018 字,大约阅读时间需要 3 分钟。

hot3.png

int anetAccept(char *err, int serversock, char *ip, int *port){	//世界人民大团结万岁    int fd;    struct sockaddr_in sa;    unsigned int saLen;    while(1) 	{        saLen = sizeof(sa);        fd = accept(serversock, (struct sockaddr*)&sa, &saLen);        if (fd == -1) {            if (errno == EINTR)                continue;            else {                anetSetError(err, "accept: %s\n", strerror(errno));                return ANET_ERR;            }        }        break;    }	    if (ip) strcpy(ip,inet_ntoa(sa.sin_addr));    if (port) *port = ntohs(sa.sin_port);	    return fd;

 

if ((flags = fcntl(fd, F_GETFL)) == -1) {        anetSetError(err, "fcntl(F_GETFL): %s\n", strerror(errno));        return ANET_ERR;    }    if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1) {        anetSetError(err, "fcntl(F_SETFL,O_NONBLOCK): %s\n", strerror(errno));        return ANET_ERR;    }

 

int yes = 1;    if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &yes, sizeof(yes)) == -1)

转载于:https://my.oschina.net/qiangzigege/blog/205575

你可能感兴趣的文章
Dataram_RAMDisk_v4_0_0安装和配置
查看>>
在window XP下使用vsphere client 5.5 访问vCenter 或者 ESXi5.5 连接错误
查看>>
35 个超棒的 Coming Soon 页面设计案例
查看>>
C语言第四天(位运算)
查看>>
硬RAID可以为NVMe SSD数据可靠性保驾护航吗?
查看>>
iPad 2 移植Siri 新手完全教程 适用所有越狱设备
查看>>
编程题:用函数实现,用户输入年月日,来计算出该日期为当年第几天?
查看>>
Pro Android学习笔记(十一):了解Intent(中)
查看>>
小程序混合框架HERA1.1.0发布
查看>>
linux下svn+rsync+inotify实现代码自动同步
查看>>
MYSQL主从+amoeba读写分离(一)
查看>>
tomcat并发量和内存的关系
查看>>
J2EE操作系统调优
查看>>
linux服务器校验时间
查看>>
闭包与柯里化
查看>>
ExtJS <1> HelloWord
查看>>
squid配置及说明文档,很好很详细
查看>>
Trufun UML工具代码生成功能视频演示
查看>>
Log4j按级别输出日志到不同文件配置分析
查看>>
搭建nginx服务器
查看>>