摘要: 一、I/O复用的特点 能同时监听多个文件描述符 自身是阻塞的 当多个文件描述符同时就绪时,如果不采取额外的措施,程序就只能按顺序依次处理其中的每一个文件描述符 由于其第三个特点,所以服务器程序看起来仍像是串行工作的,如果要实现并发,只能使用多进程或多线程等编程手段。 二、select系统调用 1. 阅读全文
posted @ 2018-08-30 23:28 GGBeng 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 一、用数值表示socket地址&用名字表示socket地址(socket地址==>IP地址和端口号) 1. 用数值表示socket地址不便于记忆,也不便于扩展(比如从IPv4转移到IPv6) 2. 用名字表示socket地址意味着用主机名代替IP地址,用服务名称代替端口号 我们可以用主机名来访问一台 阅读全文
posted @ 2018-08-30 21:40 GGBeng 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 一、根据accept返回的连接socket,想知道该连接socket的本端socket地址以及远端socket地址 补:常用于创建一个新进程来处理该连接时,新进程只知道连接socket,而不知它的本端socket地址和远端socket地址。 二、获取socket地址的函数 阅读全文
posted @ 2018-08-30 20:35 GGBeng 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 一、创建socket 1. type参数指定的服务类型有SOCK_STREAM服务(流服务)和SOCK_DGRAM服务(数据报服务) 对TCP/IP协议族而言,其值取SOCK_STREAM表示传输层使用TCP协议,取SOCK_DGRAM表示传输层使用UDP协议。 补:type参数可以接受上述服务类型 阅读全文
posted @ 2018-08-30 20:05 GGBeng 阅读(1489) 评论(0) 推荐(0) 编辑
摘要: 一、字符串表示的IP地址需要被转化为整数(二进制数)方能使用 IPv4地址:点分十进制字符串 IPv6地址:十六进制字符串 有时(如记录日志),我们则要把整数(二进制数)表示的IP地址转化为可读的字符串。 二、三个只能用于IPv4地址的函数 1. inet_ntoa是不可重入的,其内部用一个静态变量 阅读全文
posted @ 2018-08-30 16:57 GGBeng 阅读(676) 评论(0) 推荐(0) 编辑
摘要: 一、两种通用socket结构体 1. sockaddr 补:由于不同的协议栈的地址值具有不同的含义和长度(如PF_INET6的地址值占用26字节,更不必说PF_UNIX的地址值最大可达到108字节),所以14字节的sa_data根本无法容纳多数协议族的地址值。 2. sockaddr_storage 阅读全文
posted @ 2018-08-30 16:28 GGBeng 阅读(1656) 评论(0) 推荐(0) 编辑
摘要: 一、大端字节序和小端字节序 大端字节序:一个整数的高位字节(23~31bit)存储在内存的低地址处,低位字节(0~7bit)存储在内存的高地址处。 小端字节序:一个整数的高位字节(23~31bit)存储在内存的高地址处,低位字节(0~7bit)存储在内存的低地址处。 现代PC大多采用小端字节序,因此 阅读全文
posted @ 2018-08-30 15:39 GGBeng 阅读(2267) 评论(0) 推荐(0) 编辑