网络编程
文章平均质量分 94
jinxinliu1
这个作者很懒,什么都没留下…
展开
-
客户端MVC架构
主要是mvc架构,M层为数据层,两个用途:1保存数据;2发送数据更新信息;V层为视图层,两个用途:1接受用户从界面上的操作;2根据M层的数据显示相应的界面;C层为控制层,两个用途:1处理和界面无关的代码逻辑;2接受和处理网络数据;继续……按照自己的经验,游戏中的mvc架构有两种思想,1,以mvc架构为主,整个框架就转载 2013-07-04 17:06:48 · 1185 阅读 · 0 评论 -
TCP_NODELAY和Nagle算法
在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Nagle algorithm),这是使用它的发明人John Nagle的名字来命名的,John Nagle在1984年首次用这个算法来尝试解决福特汽车公司的网络拥塞问题(RFC 896),该问题的具体描述是:如果我们的应用程序一次产生1个字节的数据,而这个1个字节数据又以网络数据包的形式发送到远端服务器,那么就很容易导致网络由于转载 2014-03-18 11:56:42 · 1718 阅读 · 0 评论 -
CLOSE_WAIT状态的原因与解决方法
CLOSE_WAIT状态的原因与解决方法2009-09-24 13:52:18分类: C/C++这个问题之前没有怎么留意过,是最近在面试过程中遇到的一个问题,面了两家公司,两家公司竟然都面到到了这个问题,不得不使我开始关注这个问题。说起CLOSE_WAIT状态,如果不知道的话,还是先瞧一下TCP的状态转移图吧。关闭socket分为主动关闭(Active cl转载 2014-03-02 22:11:30 · 3730 阅读 · 0 评论 -
深入浅出TCP之半关闭与CLOSE_WAIT
深入浅出TCP之半关闭与CLOSE_WAIT 终止一个连接要经过4次握手。这由TCP的半关闭(half-close)造成的。既然一个TCP连接是全双工(即数据在两个方向上能同时传递,可理解为两个方向相反的独立通道),因此每个方向必须单独地进行关闭。 这原则就是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向连接。当一端收到一个FIN,内核让read返回0来通知应转载 2014-05-04 10:56:49 · 699 阅读 · 0 评论 -
非阻塞connect的实现
步骤1: 设置非阻塞,启动连接实现非阻塞 connect ,首先把 sockfd 设置成非阻塞的。这样调用 connect 可以立刻返回,根据返回值和 errno 处理三种情况:(1) 如果返回 0,表示 connect 成功。(2) 如果返回值小于 0, errno 为 EINPROGRESS, 表示连接 建立已经启动但是尚未完成。这是期望的结果,不是真正的错误。转载 2014-06-24 11:50:51 · 486 阅读 · 0 评论 -
Netstat 命令
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行netstat后,其输出结果为Active Internet connections (w/o servers)Proto Recv-Q Send-转载 2014-02-26 14:10:32 · 672 阅读 · 0 评论 -
GLOOX 1.0 API ----框架 ---XMPP协议
改定履历:2011-08-19-------------------新建文本文档2011-08-25--------------------增加XMPP官网链接2011-09-02-------------------新增对GLOOX1.0API文档Main Page页翻译 个人研究XMPP已经有大约一个星期的时间了,基本过程是先看了三天的RFC转载 2014-05-30 17:24:23 · 911 阅读 · 0 评论 -
TCP流量控制和拥塞控制
TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。一、滑动窗口协议 关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议。 所谓滑动窗口协议,自己理解有两点:1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”;2. “滑动...转载 2018-06-07 14:47:07 · 817 阅读 · 1 评论 -
tcp和upd粘包、拆包、ip分片问题
我们都知道TCP属于传输层的协议,传输层除了有TCP协议外还有UDP协议。那么UDP是否会发生粘包或拆包的现象呢?答案是不会。UDP是基于报文发送的,从UDP的帧结构可以看出,在UDP首部采用了16bit来指示UDP数据报文的长度,因此在应用层能很好的将不同的数据报文区分开,从而避免粘包和拆包的问题。而TCP是基于字节流的,虽然应用层和TCP传输层之间的数据交互是大小不等的数据块,但是TCP把这些...转载 2018-06-07 15:28:01 · 9273 阅读 · 1 评论 -
UDP数据包丢包
UDP数据包丢包UDP数据包的理论长度udp数据包的理论长度是多少,合适的udp数据包应该是多少呢?从TCP-IP详解卷一第11章的udp数据包的包头可以看出,udp的最大包长度是2^16-1的个字节。由于udp包头占8个字节,而在ip层进行封装后的ip包头占去20字节,所以这个是udp数据包的最大理论长度是2^16-1-8-20=65507。然而这个只是udp数据包的最大理论长度。首先,我们知道...转载 2018-06-07 16:09:54 · 1513 阅读 · 0 评论 -
高性能服务器的设计原则
高性能服务器的设计原则在很多编程论坛里经常会看到有人讨论如何开发高性能服务器的问题,但是初学者往往会把精力纠结到API的使用上,错误的认为使用了一些高级的API就意味着高性能,属于只见树木不见森林。以下是我认为高性能服务器设计应该遵循的一些基本原则:1. 有明确的服务器性能设计目标在不同应用场合中的服务器对性能的需求是不一样的,有些需要处理大量的并发连接,有些追求高实时性(低延迟),有转载 2014-03-18 12:08:47 · 3783 阅读 · 1 评论 -
socket的发送与接收缓冲区
应用程序可通过调用send(write, sendmsg等)利用tcp socket向网络发送应用数据,而tcp/ip协议栈再通过网络设备接口把已经组织成struct sk_buff的应用数据(tcp数据报)真正发送到网络上,由于应用程序调用send的速度跟网络介质发送数据的速度存在差异,所以,一部分应用数据被组织成tcp数据报之后,会缓存在tcp socket的发送缓存队列中,等待网络空闲时转载 2014-03-20 16:47:47 · 2673 阅读 · 0 评论 -
编写网络程序应该注意的几个问题
编写网络程序应该注意的几个问题 刘刚2003年9月19日星期五2006年7月14日星期五批注2009年1月22日修订 经过一年多来《天骄》网络游戏的编程工作,有了一些经验和教训,希望在这里跟大家分享。注:后来我和我的同事编写了天骄II,增加了不少经验,在这里补上。以前我们得出的一些结论到了现在发生了变化,在这里也进行了修正和补充。毕竟我离开目标软件和网络游戏行业转载 2013-07-04 15:58:57 · 1829 阅读 · 0 评论 -
多人在线游戏服务器构架
多人在线游戏服务器构架当今的网页游戏也越来越强调及时性, Server的负载过重也会造成 Server 与 Client 之间 的不同步而导致延迟的出现,因 Server 较晚回应给 Client,玩家的动作会因此变慢,因此造 成很多玩家感觉游戏本身的游戏性较差而造成大量流失玩家,下面就将次问题讨论 Server负载与解决之道!传统线上游戏系统架构主要有四种:C翻译 2013-07-04 16:00:21 · 782 阅读 · 0 评论 -
QQ游戏服务器架构
QQ游戏于前几日终于突破了百万人同时在线的关口,向着更为远大的目标迈进,这让其它众多传统的棋牌休闲游戏平台黯然失色,相比之下,联众似乎已经根本不是QQ的对手,因为QQ除了这100万的游戏在线人数外,它还拥有3亿多的注册量(当然很多是重复注册的)以及QQ聊天软件900万的同时在线率,我们已经可以预见未来由QQ构建起来的强大棋牌休闲游戏帝国。 那么,在技术上,QQ游戏到底是如何实现百万人同时翻译 2013-07-04 15:56:07 · 1345 阅读 · 0 评论 -
C++ Epoll的封装
Epoller组件的实现主要是对于epoll_create,epoll_ctl,epoll_wait等的封装,该Epoll可以设置可选择采用边缘触发还是选择触发的模式bEt,默认为边缘触发 可指定该Epoll可以指定监听的最大套接字数目max_connections/** * @brief epoller操作类,已经默认采用了EPOLLET方式做触发转载 2013-07-06 09:55:57 · 2483 阅读 · 0 评论 -
Linux Epoll介绍和程序实例
Linux Epoll介绍和程序实例原文链接:http://blog.csdn.net/sparkliang/article/details/47706551. Epoll是何方神圣?Epoll可是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。其实转载 2013-07-06 12:09:15 · 650 阅读 · 0 评论 -
HTTP 协议简介
http://zsxxsz.iteye.com/blog/568250一、TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容。TCP/IP协议是分层的,从底层至应用层分别为:物理层、链路层、网络层、传输层和应用层,如下图所示: 从应用层至物理层,数据是一层层封装,封装的方式一般都是在原有转载 2013-06-14 17:09:11 · 1333 阅读 · 0 评论 -
tcp流量控制
TCP/ip的流量控制1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是 rwnd = 400 ”(这里的 rwn转载 2014-03-13 16:39:29 · 1384 阅读 · 0 评论 -
提高TCP并发连接数和连接速度的方法
1)在内存或高速缓存cache中构建查找表,所述查找表存储根据已有TCP连接的源IP地址、目的IP地址、源端口地址、目的端口地址计算得到的签名值,并实现TCB与查找表中的相应签名值形成关联;2)当进行TCP连接的创建、删除时,先根据TCP连接的源IP地址、目的IP地址、源端口地址、目的端口地址计算得到该TCP连接的签名值,通过该TCP连接的签名值在查找表中进行查找,根据查找结果进行TCP连接的转载 2014-03-14 14:51:44 · 3842 阅读 · 0 评论 -
Epoll在LT和ET模式下的读写方式
在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable总结:这个错误表示资源暂时不转载 2013-08-26 17:51:55 · 976 阅读 · 0 评论 -
TCP的11种状态
2、全部11种状态 2.1、客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT 。 2.2、服务器独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK 。 2.3、共有的:(1)CLOSED (2)ESTABLISHED 。TCP状态迁移大家对n...转载 2018-06-07 18:06:57 · 799 阅读 · 0 评论