网络编程
文章平均质量分 93
lostyears
这个作者很懒,什么都没留下…
展开
-
Winsock IO模型之select模型
之所以称其为select模型是因为它主要是使用select函数来管理I/O的。这个模型的设计源于UNIX系统,目的是允许那些想要避免在套接字调用上阻塞的应用程序有能力管理多个套接字。 int select( int nfds, // 忽略,仅是为了与Berkeley套接字兼原创 2011-11-28 22:32:29 · 2044 阅读 · 0 评论 -
网络编程 TCP分包粘包MTU和MSS之间的关系分析
其实在以前的文章中介绍了和这个话题相关的文章,TCP封包。这里还想继续回顾想以前的内容,把不明白的东西弄明白:IP分片在以太网上,由于电气限制,一帧不能超过1518字节,除去以太网帧头14字节(mac地址等)和帧尾4字节校验,还剩1500字节,这个大小称为MTU(最大传输单元)。如果你的IP包大于1500字节,IP层就会分片了。而1492的MTU值的来源,是因为PPPoE协议。PP转载 2017-05-22 09:43:38 · 1234 阅读 · 0 评论 -
libevent入门
花了两天的时间在libevent上,想总结下,就以写简单tutorial的方式吧,貌似没有一篇简单的说明,让人马上就能上手用的。首先给出官方文档吧: http://libevent.org ,首页有个Programming with Libevent,里面是一节一节的介绍libevent,但是感觉信息量太大了,而且还是英文的-。-(当然,如果想好好用libevent,看看还是很有必要的转载 2016-04-08 17:40:17 · 512 阅读 · 0 评论 -
linux网络编程:并发服务器的模型
这篇博客主要是参考了http://renwen0524.blog.163.com/blog/static/7301945520116116016141/,这篇博客把linux网络编程的并发服务器的模型整理得很详细了,这里我是在此基础上加上了一些我自己的理解。对于进行套接字编程,选择一个号的服务器模型是非常重要的,为了实现并发的服务,有以下几种方法可以做到:1、并发服务器模型之一:预转载 2016-04-08 15:32:20 · 605 阅读 · 0 评论 -
P2P网络“自由”穿越NAT的“秘密”
P2P网络“自由”穿越NAT的“秘密”Jack zhai 穿越NAT的意义: NAT是为了节省IP地址而设计的,但它隐藏了内网机器的地址,“意外”起到了安全的作用。对外不可见,不透明的内部网络也与互联网的“公平”应用,“相互共享”的思想所不容,尤其是P2P网络中“相互服务”的宗旨,所以穿越NAT,让众多内部网络的机器也参与到P2P网络中的大集体中来,一直是P2P开发者的所希望转载 2015-04-09 08:18:20 · 1132 阅读 · 0 评论 -
网络编程:Reactor与Proactor的概念
1、标准定义两种I/O多路复用模式:Reactor和Proactor一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件处理转载 2015-04-06 11:02:26 · 637 阅读 · 0 评论 -
Winsock IO模型之IOCP模型
Windows平台上伸缩性最好的一种I/O模型莫过IOCP了,不过设计和实现起来比较复杂一些。针对成千上万个套接字的并发处理,IOCP采用了线程池+队列+重叠结构的内核机制完成任务。需要说明的是IOCP其实不仅可以接受套接字对象句柄,还可以接受文件对象句柄等。 为避免线程上下文切换,它采用了线程池。除此之外,在基于事件模型或重叠模型中不得不遇到WSAWaitForMultipleEven原创 2012-05-08 21:02:10 · 21685 阅读 · 6 评论 -
五种I/O模型的比较
我会从以下几个方面来进行比较*有无每线程64连接数限制如 果在选择模型中没有重新定义FD_SETSIZE宏,则每个fd_set默认可以装下64个SOCKET。同样的,受 MAXIMUM_WAIT_OBJECTS宏的影响,事件选择、用事件通知实现的重叠I/O都有每线程最大64连接数限制。如果连接数成千上万,则必须对 客户端套接字进行分组,这样,势必增加程序的复杂度。相反,异步选择、用完成转载 2012-05-08 21:25:46 · 1588 阅读 · 0 评论 -
Winsock IO模型之Overlapped模型
这个模型的基本思想是使用重叠数据结构一次投递一个或多个异步I/O请求。当提交的I/O请求完成之后,与之关联的重叠数据结构中的事件对象受信,应用程序便可使用WSAGetOverlappedResult函数获取重叠操作结果。这个和使用重叠结构调用ReadFile和WriteFile函数操作文件类似。 使用这个模型,必须要搞清楚以下这几个异步I/O函数:WSASocket,AcceptEx,W原创 2012-02-11 17:28:31 · 2032 阅读 · 0 评论 -
Winsock IO模型之WSAEventSelect模型
该模型与WSAAsyncSelect模型类似,允许应用程序在一个或多个套接字上接受基于事件的网络通知。它与WSAAsyncSelect模型类似是因为它也接收FD_XXX类型的网络事件,不过并不是依靠Windows的消息驱动机制,而是经由事件对象句柄通知。 使用这个模型的基本思路是为感兴趣的一组网络事件创建一个事件对象,再调用WSAEventSelect函数将网络事件和事件对象、套接字关联原创 2011-12-06 23:21:16 · 1892 阅读 · 0 评论 -
Winsock IO模型之WSAAsyncSelect模型
该模型允许应用程序以Windows消息的形式接收网络事件通知,满足现在许多对性能要求不高的网络应用程序。MFC中的CSocket类也使用了它。 WSAAsyncSelect函数自动把套接字设为非阻塞模式,并且为套接字绑定了一个窗口句柄,当有网络事件发生时,便向这个窗口发送消息。 int WSAAsyncSelect( SOCKET s,原创 2011-11-29 22:51:00 · 947 阅读 · 0 评论 -
手把手教你实现自定义的应用层协议
1.简述互联网上充斥着各种各样的网络服务,在对外提供网络服务时,服务端和客户端需要遵循同一套数据通讯协议,才能正常的进行通讯;就好像你跟台湾人沟通用闽南语,跟广东人沟通就用粤语一样。实现自己的应用功能时,已知的知名协议(http,smtp,ftp等)在安全性、可扩展性等方面不能满足需求,从而需要设计并实现自己的应用层协议。2.协议分类2.1按编码方式转载 2018-01-04 17:42:21 · 1667 阅读 · 0 评论