摘要:SocketAsyncEventArgs是.net提供的关于异步socket类,封装了IOCP的使用,可以用它方便的实现NIO(non-blocking IO)NIO对于提升某些场景下Server性能和吞吐量有很大益处,准备在服务框架中使用它来编写简易rpc的部分微软官方的demo代理有所缺少:http://msdn.microsoft.com/en-us/library/system.net.sockets.socketasynceventargs.aspx还有篇老外写的补充了缺少的代码:http://www.codeproject.com/KB/IP/socketasynceventarg
阅读全文
随笔分类 - TCP/IP
摘要:from:http://www.cnblogs.com/zhoutk/archive/2012/12/26/2833495.html最近有项目要做一个高性能网络服务器,决定下功夫搞定完成端口(IOCP),最终花了一个星期终于把它弄清楚了,并用C++写了一个版本,效率很不错。但,从项目的总体需求来考虑,最终决定上.net平台,因此又花了一天一夜弄出了一个C#版,在这与大家分享。一些心得体会:1、在C#中,不用去面对完成端口的操作系统内核对象,Microsoft已经为我们提供了SocketAsyncEventArgs类,它封装了IOCP的使用。请参考:http://msdn.microsoft.c
阅读全文
摘要:作者:蓝形参,Geek 伪技术宅 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读如数据,但是服务器还没有把数据传回来),这时候该怎么办?阻塞:阻塞是个什么概念呢?比如某个时候你在等快递,但是你不知道快递什么时候过来,而且你没有别的事可以干(或者说接下来的事要等快递来了才能做)...
阅读全文
摘要:一、I/O模型首先,输入操作一般包含两个步骤:1、等待数据准备好(waiting for data to be ready)。对于一个套接口上的操作,这一步骤关系到数据从网络到达,并将其复制到内核的某个缓冲区。2、将数据从内核缓冲区复制到进程缓冲区(copying the data from the kernel to the process)。二、I/O模型类型其次了解一下五种I/O模型:blocking I/Ononblocking I/OI/O multiplexing (selectandpoll)signal driven I/O (SIGIO)asynchronous I/O (t
阅读全文
摘要:前言:本文介绍为什么使用Dns.GetHostAddresses()在不同计算机上执行结果不同的原因;并且给出了筛选IPv4或者ipv6地址的代码。在XPsp3系统和Win7系统分别执行Dns.GetHostAddresses()方法,得到了不同的结果:win7:xp:xp中在cmd输入如下命令:原因可知:xpsp3系统没有安装ipv6协议,下面安装进行测试:安装ipv6协议:再输入ipv6 if >D:\ipv6if.txt输出内容如下:Interface 6: Ethernet: 本地连接 Guid {14F445CB-3489-474B-B644-5F749E251F46} use
阅读全文
摘要:黄色框线里面表示客户端请求关闭连接。补充细节(来自网络):关于以上的四次握手,我补充下细节:1. 默认情况下(不改变socket选项),当你调用close( or closesocket,以下说close不再重复)时,如果发送缓冲中还有数据,TCP会继续把数据发送完。2. 发送了FIN只是表示这端不能继续发送数据(应用层不能再调用send发送),但是还可以接收数据。3. 应用层如何知道对端关闭?通常,在最简单的阻塞模型中,当你调用recv时,如果返回0,则表示对端关闭。在这个时候通常的做法就是也调用close,那么TCP层就发送FIN,继续完成四次握手。如果你不调用close,那么对端就会处于
阅读全文
摘要:TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有 DATA数据传输,RST表示连接重置。其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应,如果只是单个的一个SYN,它表示的只是建立连接。TCP的几次握手就是通过这样的ACK表现出来的。但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。RST一般是在FIN之后
阅读全文
摘要:源码源码2:添加了IP地址、断开等的设置框。来源:http://www.cnblogs.com/fujinliang/archive/2012/06/20/2557064.html异步TCP和同步TCP类似,和其他所有的异步调用一样:几个基本的异步调用.AsyncCallback委托AsyncCallback委托用于引用异步操作完成时调用的回调方法。在异步操作方式下,由于程序可以在启动异步操作后继续执行其他代码,因此必须有一种机制,以保证该异步操作完成时能及时通知调用者。这种机制可以通过AsyncCallback委托实现。异步操作的每一个方法都有一个Begin…方法和End…方法,例如Begi
阅读全文
摘要:http://www.cnblogs.com/hill/archive/2006/10/12/527499.html中国移动、中国联通推行的GPRS网络、CDMA网络已覆盖大量的区域,通过无线网络实现数据传输成为可能。无线Modem采用GPRS、CDMA模块通过中国移动、中国联通的GPRS、CDMA网络进行数据传输,并通TCP/IP协议进行数据封包,可灵活地实现多种设备接入,工程安装简单,在工业现场数据传输的应用中,能很好的解决偏远无网络无电话线路地区的数据传输的难题。同传统的数传电台想比较,更具有简便性、灵活性、易操作性,同时还降低了成本,无线Modem传输方案是现代化工业现场数据传输最好的
阅读全文
摘要:http://blog.donews.com/jackqq/archive/2007/11/28/1232355.aspx最近买了一台新机器,装了 FreeBSD 7-stable,却遇到了一个问题。别人在我的 http 上下载东西的时候,我从外面进来的 ssh 被挤得几乎不动了。以前的机器上跑着 FreeBSD 5-stable,不知道是机器配置低达不到饱和,还是 5-stable 没有这个问题,或者是我 ssh 的很少根本没注意。前两种不大可能, ADSL 512Kbps 的上行速率应该很容易撑满, 5-stable 不是起因请看下面的分析。昨天晚上回来查 ssh QoS,发现一种解释。这
阅读全文
摘要:http://blog.csdn.net/hnney/article/details/5604677三次握手:握手过程的第一个段的代码位设置为SYN,序列号为x,表示开始一次握手。接收方收到这个段后,向发送者回发一个段。代码位设置为SYN和ACK,序列号设置为y,确认序列号设置为x+1。发送者在受到这个段后,知道就可以进行TCP数据发送了,于是,它又向接收者发送一个ACK段,表示,双方的连接已经建立。Client --> 置SYN标志 序列号 = J,确认号 = 0 ----> ServerClient <-- 置SYN标志 置ACK标志 序列号 = K, 确认号 = J +
阅读全文
摘要:TCP序列号和确认号详解 http://hi.baidu.com/zengzhaonong/item/e691514af9b16cacdf2a9f8d在网络分析中,读懂TCP序列号和确认号在的变化趋势,可以帮助我们学习TCP协议以及排查通讯故障,如通过查看序列号和确认号可以确定数据传输是否乱序。但我在查阅了当前很多资料后发现,它们大多只简单介绍了TCP通讯的过程,并没有对序列号和确认号进行详细介绍,结合实例的讲解就更没有了。近段时间由于工作的原因,需要对TCP的序列号和确认号进行深入学习,下面便是我学习后的一些知识点总结,希望对TCP序列号和确认号感兴趣的朋友有一定帮助。1. 序列号和确认号的
阅读全文

浙公网安备 33010602011771号