Socket之listen() receive()
socket.listen([backlog])
相比listen方法,它俩就好理解多了,一个是Client用于连接Server的方法,一个是Server用于接收Client的连接申请的方法。
但事实上accept方法一次只能接收一个Client的连接申请,而Client则是多个的,这样Socket会设计一个队列来存储Client的连接申请则是理所当然的。于是accept便从这个队列里提取首位成员处理即可。以下是示意图:
如此便很清晰了,backlog参数的含义便是这个队列的最大值,也就是同时受理连接申请的最大值。关于backlog该设置为多少,从Skynet得到的参考为32。如果满了便需要Client重新connect。以上listen方法之谜便解开了。
send和receive函数都可以接受一个类型为SocketFlag的参数,此参数有如下6种取值:
-------------------------------------------------------------------
DontRout 不用内部路由表发送数据
MaxIOVectorLength 给用于发送和接收数据的WSABUF结构提供一个标准值
None 对这次调用不使用标志
OutOfBand 处理带外的(out-of-band)数据
Partial 部分地发出或接收消息
Peek 只对进入的消息取数
Socket之listen() receive()的更多相关文章
- windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error
windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error 学习了:https ...
- socket编程listen函数限制连接数的解决方案
函数原型: int listen(int sockfd, int backlog); 当服务器编程时,经常需要限制客户端的连接个数,下面为问题分析以及解决办法: 下面只讨论TCP UDP不做讨论(很 ...
- 网络编程socket之listen函数
摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程.在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被 ...
- Socket相关函数(1)- socket(), bind(), listen(), accept(), connect(), TCP模型
tcp_server.c #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #in ...
- 解决启动redis出现的creating server tcp listening socket *:6379: listen: unknown error
今天运行redis服务端时候出现这个问题: D:\php\software\redis>redis-server.exe [] Dec ::00.797 # Warning: no config ...
- TCP回射客户服务器模型(01 socket bind listen accept connect)
socket函数(安装电话机)头文件:#include<sys/socket.h> int socket(int family, int type, int protocol); //返 ...
- redis启动错误-- Creating Server TCP listening socket *:6379: listen: UnKnown error
前提:windows server 2008.redis 3.x 今天给服务器部署redis环境,文件配置.服务安装都很顺利,可就在启动服务的时候提示 百度老半天也没找到个说到点子上的. 这里记录下解 ...
- 接口处理篇 accept bind connect atan2 htons inet_addr inet_aton inet_ntoa listen ntohl recv send sendto socket
accept(接受socket连线) 相关函数 socket,bind,listen,connect 表头文件 #include<sys/types.h> #include<sys/ ...
- [python]socket.listen(backlog)中的backlog含义
http://www.nosa.me/2015/09/16/socket-listenbacklog-%E4%B8%AD-backlog-%E6%8C%87%E7%9A%84%E6%98%AF%E4% ...
随机推荐
- DSAPI多功能组件编程应用-网络相关(下)
[DSAPI.DLL下载地址] 在本篇,我将重点介绍DSAPI.DLL中Socket编程的使用.众所周知,Socket用起来不难,但是写起来麻烦.我对Socket进行了封装,进行了高度简化.下面我将通 ...
- [android] 相对布局和单位简介
/**********************2016年4月23日 更新*******************************/ 知乎:为何Android的默认布局是RelativeLayou ...
- Java开发笔记(二十六)方法的输出参数
前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允 ...
- Ext中继承知识点
Ext.define(entend):定义类,单继承 Ext.define(override):定义类的补丁(扩展或重写) Ext.extend:老版本的定义类,单继承 Ext.override:4种 ...
- Android 通过反射获取DatePicker 中的控件,并改变其颜色
到最后也只是成功改变了中间部分的颜色. private void setDatePickerDividerColor(DatePicker datePicker) { // Divider chang ...
- WPF开发为按钮提供添加,删除和重新排列ListBox内容的功能
介绍 我有一种情况,我希望能够将项目添加到列表中,并在列表中移动项目,这似乎是使用a的最简单方法ListBox.我立刻想到了如何以通用的方式做到这一点,然后,也许,可以使用行为来做到这一点.这似乎是一 ...
- echarts中legend如何换行
lengend data数据中若存在'',则表示换行,用''切割.
- SQLServer之创建分布式事务
分布式事务创建注意事项 指定一个由 Transact-SQL 分布式事务处理协调器 (MS DTC) 管理的 Microsoft 分布式事务的起点. 执行 BEGIN DISTRIBUTED TRAN ...
- git取消跟踪已版本控制的文件
git 不再追踪文件改动 git update-index --assume-unchanged filePath git 恢复追踪文件改动 git update-index —no-assume-u ...
- U盘中的快捷方式解析
很多人都有使用绿色软件的习惯,在这里我简单称其为Portable App 将这些软甲放到U盘中随身携带,便于我们使用更加符合自身习惯的功能软件. 相信习惯将软件放到U盘启动都会碰到一个问题,就是每次打 ...