网络编程
sunnydogzhou
linux,java,c,网络,分布式,NoSql
展开
-
基于libevent2.0的ministored的http框架--server端
将Ministored从libevent1.4升级到2.0以后,花了两天额外的时间来做调试这个http的框架。按照开发的设想,这个ministored支持四个基本的操作put、get、delete、status;在经过几个版本的改动以后,协议如下:1)数据通过post的方式提交2)各个基本操作通过一个自定义的Http的头method来区分。而client和server之间的传送的二进制数据通过base64编码以后的字符串发送。数据附加在post操作提交的字符缓冲区中。 2.1 put操作需要的数据k原创 2011-05-22 18:31:00 · 3714 阅读 · 2 评论 -
基于libevent2.0的ministored的http框架--client端
协议啥的都在上一篇日志《基于libevent2.0的ministored的http框架--server端》说啦,client短还是废话少说,直接上代码吧!包含了put和get的操作以及部分的测试代码,gcc下编译可以直接通过!#include #include #include #include #include #include #include #include "base64.h" struct request_context { struct evhttp_ur原创 2011-05-22 18:49:00 · 3634 阅读 · 1 评论 -
从libevent1.4到libevent2.0碰到的问题,struct evhttp_uri在头文件只有声明
<br />最近做ministored的时候用libevent来搭建基于http的框架,手头的库是去年从官网上下来的1.4 stable的版本,开发完服务器端程序以后,发现libevent 1.4对于客户端程序的支持不尽如人意,于是手动写了一个tcp的客户端来发送http的协议。一切ok!<br /> <br />后来无意 中跑去官网上看了看,发现libevent 2.0有stable了,忍不住下了一个下来看看,make install之后开始了我的一天的悲剧之旅。安装完以后,发现Libeve原创 2011-05-21 12:05:00 · 5946 阅读 · 2 评论 -
netstat下time_wait数过多引起的问题
<br />在做ministored 性能测试的时候,需要尽可能快的发送http请求给server端。因此做了一个循环,让client不停的发送,中间用usleep来控制发送的频率,最开始的时候usleep的值设置的很小,结果发现很快Server就不能给client正确的响应,client收不到数据,然后出现了coredump,用netstat -anp |grep 1314以后发现,处于time_wait的链接数太多了,有2-3只多。于是分析问题可能是被占用的套接字太多了,导致server创建不了新的套接原创 2011-06-02 14:57:00 · 12187 阅读 · 0 评论 -
TCP连接中的TIME_WAIT状态
1 TCP关闭时的四次握手Tcp连接在关闭的的时候,执行的是一个四次握手的过程,下图是客户端发起的关闭时客户端和服务器的状态转换图具体过程如下:1、 客户端发送FIN报文段,进入FIN_WAIT_1状态。2、 服务器端收到FIN报文段,发送ACK表示确认,进入CLOSE_WAIT状态。3、 客户端收到FIN的确认报文段,进入FIN_WAIT_2状态。4、 服务器端发原创 2011-06-28 11:32:00 · 11606 阅读 · 0 评论