随笔分类 - 网络编程
摘要:在我的博客之前写了很多关于IOCP的“行云流水”似的看了让人发狂的文章,尤其是几篇关于IOCP加线程池文章,更是让一些功力不够深厚的初学IOCP者,有种吐血的感觉。为了让大家能够立刻提升内力修为,并且迅速的掌握IOCP这个Windows平台上的乾坤大挪移心法,这次我决定给大家好好补补这个基础。 要想
阅读全文
摘要:一.异步IO模型(asynchronous IO) (1)什么是异步I/O 异步I/O(asynchronous I/O)由POSIX规范定义。演变成当前POSIX规范的各种早起标准所定义的实时函数中存在的差异已经取得一致。一般地说,这些函数的工作机制是:告知内核启动某个操作,并让内核在整个操作(包
阅读全文
摘要:要弄清问题 先要知道问题的出现原因 原因: 由于进程的执行过程是线性的(也就是顺序执行),当我们调用低速系统I/O(read,write,accept等等),进程可能阻塞,此时进程就阻塞在这个调用上,不能执行其他操作.阻塞很正常. 接下来考虑这么一个问题:一个服务器进程和一个客户端进程通信,服务器端
阅读全文
摘要:SEQ是序列号,这是为了连接以后传送数据用的,ACK是对收到的数据包的确认,值是等待接收的数据包的序列号。 在第一次消息发送中: A随机选取一个序列号作为自己的初始序号发送给B。 第二次消息: B使用ACK对A的数据包进行确认,因为已经收到了序列号为1000的数据包,准备接收序列号为1000+1的包
阅读全文
摘要:不同的CPU有不同的字节序类型,这些字节序是指 整数 在内存中保存的顺序,这个叫做 主机序。 最常见的有两种: 1.Little endian:将低序字节存储在起始地址 2.Big endian:将高序字节存储在起始地址 LE little-endian(小端) 最符合人的思维的字节序; 地址低位存
阅读全文
摘要:先明确一个问题,如果定义了一个数据结构,大小是,比方说 32 个字节,然后 UDP 客户端连续向服务端发了两个包。现在假设这两个包都已经到达了服务器,那么服务端调用 recvfrom 来接收数据,并且缓冲区开得远大于 64,例如,开了 1024 个字节,那么,服务端的 recvfrom 函数是会一次
阅读全文
摘要:这是从设计者的角度看问题,今天我想切换到用户的角度,看看用户是如何从上至下,与这些协议互动的。 互联网协议入门(二) 作者:阮一峰 (接上文) 七、一个小结 先对前面的内容,做一个小结。 我们已经知道,网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑
阅读全文
摘要:我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗? 互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol
阅读全文
摘要:以往,我们肯定知道,在搞Web应用的时候,我们都可能会遇到提供文件下载的功能需求,比如我以前做的一个客户许可证管理系统,客户购买ERP系统后,通常我们会根据客户的机器的机器码生成一个许可文件,而这个许可文件是有时间限制的,一年后会过期,过期之后客户需要重新获取许可,以表示继续使用我们的超级牛B产品,
阅读全文
摘要:最近几天用C++重新写了之前的HTTP服务器,对以前的代码进行改进。新的HTTP服务器采用Reactor模式,有多个线程并且每个线程有一个EventLoop,主程序将任务分发到每个线程,其中采用的是轮盘调度来均匀分配任务。 服务器的源代码放在Github。以前的旧版本也放在我的GitHub上,在Oh
阅读全文

浙公网安备 33010602011771号