![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
windows网络编程
文章平均质量分 82
Barry__
勿在浮沙筑高台
展开
-
NAT详解
转自:http://blog.csdn.net/weiyuefei/article/details/522474971. IPv4协议和NAT的由来今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣。他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需。企业利用互联网发布信息,传递资料和订单,提供技术支持,完成日常办公。然而,In转载 2017-09-19 09:38:31 · 10090 阅读 · 3 评论 -
IOCP模型编程注意点
乱序问题问题描述:客户端依次发送Msg1,Msg2,Msg3,服务器的逻辑处理的顺序不一定是Msg1,Msg2,Msg3产生原因: 三个线程同时从IOCP中读取Msg1, Msg2,与Msg3。由于TCP本身消息传递的有序性,所以,在IOCP队列内,Msg1-Msg2-Msg3保证了有序性(注意:数据在IOCP队列中数据顺序肯定是对的,乱序问题的产生在线程GetQueuedComple原创 2016-01-10 20:20:29 · 1547 阅读 · 0 评论 -
UDP接收端缓冲区和丢包问题
转自:http://blog.csdn.net/ljh0302/article/details/49738191实习项目需要用Winsock内核模式驱动提供的sockets方法,,这个驱动负责连接和缓冲管理,对应用程序提供socket风格的编程接口。大概的流程是发送端将一幅图像分成多个包进行发送,接收端接收包整合成图像并显示。通过测试发现,发送端是相机,采用udp协议,发送转载 2017-06-28 19:10:39 · 7369 阅读 · 2 评论 -
windows下socket编程:区分shutdown()及closesocket()
以下描述主要是针对windows平台下的TCP socket而言。首先需要区分一下关闭socket和关闭TCP连接的区别,关闭TCP连接是指TCP协议层的东西,就是两个TCP端之间交换了一些协议包(FIN,RST等),具体的交换过程可以看TCP协议,这里不详细描述了。而关闭socket是指关闭用户应用程序中的socket句柄,释放相关资源。但是当用户关闭socket句柄时会隐含的触发TCP转载 2016-08-24 11:32:44 · 3049 阅读 · 0 评论 -
TCP粘包分析
TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据。若连续几次发送的数据都很少,通常TCP会根据优化算法把这些数据合成一包后一次发送出去,这样接收方就收原创 2016-01-10 20:23:56 · 463 阅读 · 0 评论 -
SOCKET中send和recv函数工作原理与注意点
send函数工作原理: send函数只负责将数据提交给协议层。 当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR; 如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议是否正在发送s的发送缓冲中的数据; 如果是就等待协议把数据发送完,如果协议还没有开始发送s的发送缓冲中的原创 2016-01-09 18:37:43 · 6864 阅读 · 0 评论 -
CASyncSocket类和CSocket类编程
CASyncSocket类和CSocket类编程 本文主要讲解以下内容 (1)CAsyncSocket类编程模式。 (2)CSocket类编程模式。 (3)CSocketFile类和CArchive类简介。 通过学习,可以掌握CAsyncSocket类和CSocket类的编程模式,了解CSocketFile类和 CArchive类。CAsyncSocke转载 2015-12-23 10:07:19 · 1597 阅读 · 0 评论 -
CSocket详解
CSocket的用法 CSocket在CAsyncSocket的基础上,修改了Send、Recieve等成员函数, 帮你内置了一个用以轮询收发缓冲区的循环,变成了同步短连接模式。 短连接应用简单明了,CSocket经常不用派生就可以直接使用,但也 有些问题: 1、用作监听的时候 曾经看到有人自己创建线程,在线程中创建CSocket对象进行Listen、 Accept,若Accept成功转载 2015-12-23 10:06:13 · 9544 阅读 · 0 评论 -
完成端口(Completion Port)详解
转载的,写的很详细,原文地址点击打开链接 完成端口(Completion Port)详解 ----- By PiggyXP(小猪)前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该原创 2016-01-07 14:49:21 · 537 阅读 · 0 评论 -
windows下五种I/O模型的比较
windows下五种I/O模型的比较转载 2015-12-22 21:53:35 · 2257 阅读 · 0 评论 -
完成端口模型IOCP
完成端口模型“完成端口”模型是迄今为止最为复杂的一种 I / O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但不幸的是,该模型只适用于Windows NT和Windows 2000操作系统。因其设计的复杂性,只有在你的应用程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的 C P U数量的增多,应用程转载 2015-12-21 14:32:19 · 1286 阅读 · 0 评论 -
CAsyncSocket详解
一、CAsyncSocket异步机制当你获得了一个异步连接后,实际上你扫除了发送动作与接收动作之间的依赖性。所以你随时可以发包,也随时可能收到包。发送、接收函数都是异步非阻塞的,顷刻就能完成,所以收发交错进行着,你可以一直工作,保持很高的效率。但是,正因为发送、接收函数都是异步非阻塞的,所以仅调用它们并不能保障发送或接收的完成。例如发送函数Send,调用它可能有3种结果:错转载 2015-10-27 14:47:25 · 7672 阅读 · 1 评论 -
Winsock IO模型之select模型
之所以称其为select模型是因为它主要是使用select函数来管理I/O的。这个模型的设计源于UNIX系统,目的是允许那些想要避免在套接字调用上阻塞的应用程序有能力管理多个套接字。 int select( int nfds, // 忽略,仅是为了与Berkeley套接字兼转载 2015-10-28 10:45:19 · 646 阅读 · 0 评论 -
异步选择模型WSAAsyncSelect
异步选择(WSAAsyncSelect)模型是一个有用的异步 I/O模型。利用这个模型,应用程序可在一个套接字上,接收以 Windows消息为基础的网络事件通知。具体的做法是在建好一个套接字后,调用WSAAsyncSelect函数。该模型的核心即是WSAAsyncSelect函数。 WSAAsyncSelect函数定义如下: int WSAAsyncSelect(转载 2015-11-05 22:02:42 · 1112 阅读 · 0 评论 -
基于事件的select:WSAEventSelect模型
该模型与WSAAsyncSelect模型类似,允许应用程序在一个或多个套接字上接受基于事件的网络通知。它与WSAAsyncSelect模型类似是因为它也接收FD_XXX类型的网络事件,不过并不是依靠Windows的消息驱动机制,而是经由事件对象句柄通知。 使用这个模型的基本思路是为感兴趣的一组网络事件创建一个事件对象,再调用WSAEventSelect函数将网络事件和事件对象、套接字转载 2015-11-07 15:07:56 · 1952 阅读 · 0 评论 -
重叠I/O详解
在windows中有一个api叫readfile bool readfile( handle hfile, // handle to file lpvoid lpbuffer, // data buffer转载 2015-11-08 21:09:13 · 5937 阅读 · 2 评论 -
基于事件的重叠IO模型
Windows socket重叠IO模型开发。 利用套接字重叠IO模型,应用程序能一次投递一个或多个IO请求,当系统完成IO操作后通知应用程序。该模型以win32异步IO机制为基础。与前面介绍的所有IO模型相比较,该模型是真正意义上的异步IO模型,它能使Windows socket应用程序达到更高的性能。 关于异步IO机制可以参考:《Windows转载 2015-12-19 21:35:33 · 2994 阅读 · 0 评论 -
NAT穿透(UDP打洞)
转自:http://www.cnblogs.com/GO-NO-1/p/7241556.html1、NAT(Network Address Translator)介绍NAT有两大类,基本NAT和NAPT。1.1、基本NAT静态NAT:一个公网IP对应一个内部IP,一对一转换动态NAT:N个公网IP对应M个内部IP,不固定的一对一转换关系转载 2017-09-19 10:21:37 · 15370 阅读 · 0 评论