- 博客(13)
- 资源 (9)
- 收藏
- 关注
原创 基于epoll服务器的测试计划
1 2000路上线回显,然后关闭连接。2 2000路上线回显,然后保持连接,定时测试。3 2000路上线加大数据包大小测试,最大2k。4 2000路上线服务器日志对客户上线时间和通信行为进行日志记录。实验条件:1 ubuntu虚拟机运行服务器,客户端运行在win7主机上,桥接无线通信。2 服务器基于c的程序,关键技术是epoll。客户端基于go语言,利用其线程技术模
2015-05-31 16:22:32 403
原创 大量syn请求处理的一些问题
在高并发连接服务器编写时,当同一秒内大量连接进入,epoll_wait的et总是丢失一部分连接,经上网查询后要求对每次accept都需要循环检查,添加代码后少量连接没有问题,连接数量上100就又会丢失一部分连接,无论是et模式还是lt模式都有这种情况。今天偶然觉得可能会是accept的问题,纯accept循环仍然丢失连接,wireshark抓包没有问题,都收到了确认,服务器客户端都没有报错苦思
2015-05-31 15:25:13 1419
原创 一些概念
正在握手的队列大小由/proc/sys/net/ipv4/tcp_max_syn_backlog指定。如果启用了syncookies未完成队列的大小是无限的,syncookies 主要是将在收到客户端SYN包后就分配资源改成在完成握手后再分配这些资源,避免同时收到大量的SYN包的需要分配大量资源而受到攻击。
2015-05-31 09:43:58 338
原创 epoll处理高并发连接丢失连接的问题
epoll的LT和ET的区别LT:水平触发,效率会低于ET触发,尤其在大并发,大流量的情况下。但是LT对代码编写要求比较低,不容易出现问题。LT模式服务编写上的表现是:只要有数据没有被获取,内核就不断通知你,因此不用担心事件丢失的情况。ET:边缘触发,效率非常高,在并发,大流量的情况下,会比LT少很多epoll的系统调用,因此效率高。但是对编程要求高,需要细致的处理每个请求,否则容易发
2015-05-30 14:56:25 2985
转载 git add .失败解决办法
“git add”出错近日使用“git add”出现如下错误: $ git add ./warning: You ran 'git add' with neither '-A (--all)' or '--ignore-removal',whose behaviour will change in Git 2.0 with respect to paths you re
2015-05-28 22:34:16 20775
原创 一个线程池解决epoll socket队列的方法
每个线程一个队列。每个socket都用哈希将其发入固定队列,这样就不会发生两个队列同时处理同一个socket信息的问题。小收获:算法谜题书不错
2015-05-28 21:58:42 1259
原创 生产者消费者问题的一些代码上的见解
#include #include #include #include "pthread.h"#define BUFFER_SIZE 2/* Circular buffer of integers. */struct prodcons { int buffer[BUFFER_SIZE]; /* the actual data */ pthread_mutex_t lock; /* mutex en
2015-05-24 21:13:26 540 1
转载 pthread_cond_wait详解
对pthread_cond_wait一直不是很理解,看到一篇文章写的不错,原文在这里,http://www.ibm.com/developerworks/cn/linux/thread/posix_thread3/#1下面说一下,pthread_cond_wait(&mycond,&mymutex)的东西1. 设计pthread_cond_wait 的初衷 线程
2015-05-24 20:34:13 795
转载 boost circular_buffer的使用
有时候我们需要固定大小的一个类似数组的东西,存储比如一个用户最近10天的留言记录这些东西,但是又想实现随机访问,也就是支持下标的操作,list肯定是不适合的,因为它不支持随机访问。当然我们可以用vector或者deque做类似的模拟封装,但是这样比较麻烦,boost库提供了一个circular_buffer,包含了stl deque和vector的几乎所有功能,而且可以指定大小。如果其中的元素的数
2015-05-24 11:33:50 1715
原创 在GitHub上创建代码仓库
Create a new repository on the command linetouch README.mdgit initgit add README.mdgit commit -m "first commit"git remote add originhttps://github.com/lltppong-it/TeweWater.git
2015-05-24 09:00:37 322
原创 github在linux下的配置
第一步: 安装Git,使用命令 “sudo apt-get install git”第二步: 到GitHub上创建GitHub帐号第三步: 生成ssh key,使用命令 “ssh-keygen -t rsa -C "your_email@youremail.com"”,your_email是你的email第四步: 回到github,进入Account Setti
2015-05-21 21:55:35 399
原创 关于TCP连接数的限制(基于epoll)
当listenedfd收到连接时间后不能采用放弃accept操作的ET模式 经过测试此时客户端会认为已经连上 但实际上服务器逻辑上并没有添加这个连接。解决方法:accept后对连接数进行检测,如果发现超过连接数就立即关闭该socket。
2015-05-18 21:35:00 1941
刘文涛 网络安全开发包 难得宝库
2010-02-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人