网络通信
lizhi200404520
喜欢足球,篮球
展开
-
大并发下listen的连接完成对列backlog太小导致客户超时,服务器效率低下
代码就是之前论坛发过的一个epoll代码,根据需要改了就是服务端send的参数。。如下:/*-------------------------------------------------------------------------------------------------gcc -o httpd httpd.c -lpthread author: wyezl转载 2011-11-17 12:37:30 · 6492 阅读 · 2 评论 -
网页及时通讯
1、http://www.doc88.com/p-776870659456.html原创 2012-04-19 15:01:20 · 664 阅读 · 0 评论 -
关闭socket
异步socket在调用send函数后,不能保证缓冲区的数据已经被发送出去,且由于SO_LINGER设置的问题,立即关闭不可行SO_LINGER选项用来改变此缺省设置。使用如下结构:struct linger { int l_onoff; /* 0 = off, nozero = on */ int l_linger; /* linger time */原创 2012-03-05 16:56:46 · 882 阅读 · 0 评论 -
[转]epoll 经验谈
1、首先需要一个内存池,目的在于:·减少频繁的分配和释放,提高性能的同时,还能避免内存碎片的问题;·能够存储变长的数据,不要很傻瓜地只能预分配一个最大长度;·基于SLAB算法实现内存池是一个好的思路:分配不同大小的多个块,请求时返回大于请求长度的最小块即可,对于容器而言,处理固定块的分配和回收,相当容易实现。当然,还要记得需要设计成线程安全的,自旋锁比较好,使用读写自旋锁就更好了。转载 2012-03-03 15:15:40 · 628 阅读 · 0 评论 -
剖析 epoll ET/LT 触发方式的性能差异误解(定性分析)
剖析 epoll ET/LT 触发方式的性能差异误解(定性分析) 平时大家使用 epoll 时都知道其事件触发模式有默认的 level-trigger 模式和通过 EPOLLET 启用的 edge-trigger 模式两种。从 epoll 发展历史来看,它刚诞生时只有 edge-trigger 模式,后来因容易产生 race-cond 且不易被开发者理解,又增加了 level-转载 2012-03-03 15:39:02 · 1122 阅读 · 1 评论 -
C:\WINDOWS\system32\drivers\etc\hosts文件
访问域名,优先查找的是hosts文件中郁闷跟ip对应关系,如果没找到,再去DNS服务器查找,如果确定某ip可以访问,在hosts文件中配置ip跟域名的对应关系,只要输入域名就可以访问该ip对应的主机了。原创 2012-02-20 10:54:00 · 787 阅读 · 0 评论 -
配置开发支持高并发TCP连接的Linux应用程序全攻略
1、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[speng@as4 ~]$ ulimit转载 2012-02-24 19:52:25 · 951 阅读 · 0 评论 -
htonl、ntohl、htons、ntohs函数实现
typedef unsigned short int uint16;typedef unsigned long int uint32; // 短整型大小端互换#define BigLittleSwap16(A) ((((uint16)(A) & 0xff00) >> 8) | \ (((ui转载 2012-02-24 12:15:25 · 24757 阅读 · 1 评论 -
socket INADDR_ANY 监听0.0.0.0地址 socket只绑定端口让路由表决定传到哪个ip
socket INADDR_ANY 监听0.0.0.0地址 socket只绑定端口让路由表决定传到哪个ip其中INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。一般情况下,如果你要建立网络服务器,则你要通知服务器操作系统:请在某地址 xxx.xxx.xxx.xxx上的某端口 yyyy上进行侦听,并且把侦听到的数据包发送给转载 2011-12-16 18:12:40 · 4875 阅读 · 1 评论 -
后台服务器经典面试题
1, 使用Linux epoll模型,水平触发模式(Level-Triggered);当socket可写时,会不停的触发socket可写的事件,如何处理?2, 从socket读数据时,socket缓存里的数据,可能超过用户缓存的长度,如何处理? 例如,socket缓存有8kB的数据,而你的缓存只有2kB空间。3, 向socket发送数据时, 可能只发送了用户缓存里的一半,如何处理?例如,需转载 2011-12-15 20:08:07 · 8674 阅读 · 0 评论