摘要:
粘包及处理方法 粘包:由于缓冲区及下层硬件的原因,第n个包与第n+1个包合并在一起发送,或第n个包与第n+1个包的一部分合并在一起发送,等等。如果接收方要求格式良好,那我们就必须控制发送与接收方式。 处理方法: 1.发送定长包,发送方每次固定发送n个字节长,同时接受方固定每次读n个字节长。缺点:数据 阅读全文
posted @ 2016-12-04 21:14
cfans1993
阅读(144)
评论(0)
推荐(0)
摘要:
select的优点与使用方法 select用单线程的方法遍历所有待读写的I/O接口, 当有接口可用时就会返回. select可设置电脑阻塞或非阻塞. 特别注意: 每次select前都要重新初始化集合和相关的时间结构 使用的基本过程: 实例 只写了server端的,client端差不多 c inclu 阅读全文
posted @ 2016-12-04 21:13
cfans1993
阅读(291)
评论(0)
推荐(0)
摘要:
server.c 把accept也看成是一个read类型的函数, 于是我们可以把sockfd也放入到select中 maxi标记当前客户端连接数组的最大下标 select返回值为当前已经准备就绪的fd总数 c include include include include include inclu 阅读全文
posted @ 2016-12-04 21:13
cfans1993
阅读(1761)
评论(0)
推荐(0)
摘要:
select的限制 select的并发数受到两个限制:1.一个进程能打开的最大描述符数量;2.select中fd_set集合容量的限制(FD_SETSIZE) 关于进程的最大描述符数量: ulimit n:查看一个进程能打开的最大描述符数量 ulimit n 2048:将最大描述符数量更改为2048 阅读全文
posted @ 2016-12-04 21:12
cfans1993
阅读(339)
评论(0)
推荐(0)
摘要:
非阻塞read/write 函数返回0表示可读或可写, 1表示select失败或超时 select返回0表示超时, 1表示读取失败,1表示可读或可写 非阻塞accecpt c int accept_timeout(int fd,struct sockaddr_in addr,unsigned int 阅读全文
posted @ 2016-12-04 21:12
cfans1993
阅读(179)
评论(0)
推荐(0)
摘要:
关于select/poll与epoll select/poll虽然避免了无限循环轮循, 但是有一个问题,那就是特定事件发生时,我们还是需要再次轮循一遍查看到底时哪个或哪几个fd产生了可读或可写事件 epoll的等待事件返回后, 虽然返回值也是可用事件总数, 但可用事件会返回到一个指定的事件集合中,这 阅读全文
posted @ 2016-12-04 21:11
cfans1993
阅读(151)
评论(0)
推荐(0)
摘要:
getaddrinfo getaddrinfo的一个重要功能, 很方便的构造struct sockaddr_in对象, 把繁琐的构造过程隐藏起来 getaddrinfo兼有gethostbyname和getservbyname等四个函数的功能 能传入ip/port, hostname/port, i 阅读全文
posted @ 2016-12-04 21:10
cfans1993
阅读(725)
评论(0)
推荐(0)

浙公网安备 33010602011771号