Redis源码系列28:ServerSocket接收到client的连接请求处理过程
2014-03-06 00:00
597 查看
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)
相关文章推荐
- redis安装问题小结
- Redis偶发连接失败案例实战记录
- redis中修改配置文件中的端口号 密码方法
- 利用yum安装Redis的方法详解
- 为啥懒 Redis 是更好的 Redis
- 详解Redis使用认证密码登录
- Redis 在真实世界的 5 个用法
- Redis中的动态字符串学习教程
- 详解Redis开启远程登录连接
- redis实现加锁的几种方法示例详解
- Redis 集群搭建和简单使用教程
- 使用kendynet构建异步redis访问服务
- redis 队列操作的例子(php)
- redis实现多进程数据同步工具代码分享
- Redis中五种数据类型简单操作
- redis启动流程介绍
- redis安装和配置_动力节点Java学院整理
- Linux安装单机版Redis的完整步骤
- 浅谈redis在项目中的应用
- php中使用redis队列操作实例代码