之前一直没明白setsockopt的作用。原来是用来设置socket的属性。setsockopt设置SO_REUSEADDR。socket关闭之后并不会立即收回,而是要经历一个TIME_WAIT的阶段。windows下最多可以达到4分钟。所以在这个时候对这个端口进行重新绑定就会出错。所以需要先设置S...
分类:
其他好文 时间:
2014-08-07 22:43:05
阅读次数:
375
*集群可以布署在一台服务器上,也可以布署在多台服务器上;*支持传统TCP\IP协议;*既支持SOCKET长连接也支持短连接;*支持最新REST WEBSERVICE;*一台应用服务器可支持5000以上TCP\IP长连接,适用于大并发适时数据采集系统;*支持多帐套;*可实现应用服务器自由扩展,插件式的...
分类:
其他好文 时间:
2014-08-07 21:34:50
阅读次数:
303
我之前的项目都是基于http做网络通信,但是做多玩家同时对战的游戏,http短连接不支持服务器的push是个问题,这样客户端就没办法收到服务器的消息。最简单的方法是定时发起request询问服务器,显然效率和流量是个问题。还有Comet方法,即服务器保持连接直到有数据可用才返回。网上搜了一下come...
分类:
其他好文 时间:
2014-08-03 17:46:35
阅读次数:
230
TIME_WAIT状态存在的理由----------------------------TCP/IP协议就是这样设计的,是不可避免的。主要有两个原因:1)可靠地实现TCP全双工连接的终止TCP协议在关闭连接的四次握手过程中,最终的ACK是由主动关闭连接的一端(后面统称A端)发出的,如果这个ACK丢失...
分类:
其他好文 时间:
2014-07-31 19:54:47
阅读次数:
236
本文不会完整的介绍TCP,只有在涉及到的时候随便提一下。不适合对TCP整个流程和框架没有了解过的人阅读。 ????1??TCP?四次挥手中的TIME_WAIT状态的意义何在。 下图四次挥手的一个大体的流程 ??? 我们发...
分类:
其他好文 时间:
2014-07-21 23:29:02
阅读次数:
489
下面我们用最简单的一对一的客户服务器模型来重现编程中遇到的一些问题:
初学socket的时候在编写socket程序的时候会遇到很多莫名其妙的问题,比如说bind函数返回的常见错误是EADDRINUSE
使用下面的程序重现这个状态:
client:
int main(int argc, const char * argv[])
{
struct sockaddr_in ...
分类:
其他好文 时间:
2014-07-19 23:36:19
阅读次数:
427
1.意义同一个TCP连接来发送和接收多个HTTP请求/应答,而不是为每一个新的请求/应答打开新的连接的方法。2.优较少的CPU和内存的使用允许请求和应答的HTTP pipelining降低网络阻塞减少了后续请求的延迟(无需再进行握手)报告错误无需关闭TCP连接3.缺空闲的连接需要过段时间后才能被断开...
分类:
其他好文 时间:
2014-07-19 14:32:02
阅读次数:
214
查看TCP状态:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'查看SOCKET状态:cat /proc/net/sockstatTIME_WAIT状态的socket一般需要等到2msl时间后,socket才会被...
分类:
系统相关 时间:
2014-07-16 18:28:46
阅读次数:
231
HTTP实现长连接HTTP是无状态的也就是说,浏览器和server每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。假设client浏览器訪问的某个HTML或其它类型的Web页中包括有其它的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,...
分类:
其他好文 时间:
2014-07-03 06:47:46
阅读次数:
486
什么是长连接?其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。通常的短连接操作步骤是:连接-》数据传输-》关闭连接;而长连接通常就是:连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接;这就要求长连接在没有数据通信时,定时发送数据包,以维持连...
分类:
数据库 时间:
2014-07-01 16:52:53
阅读次数:
299