随笔分类 - MFC06:通讯
!!! TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
摘要:TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞这个标题用了两个顿号三个名称,其实说得是同一个东西,只是网上有不同的说法罢了,另外好像还有人叫TCP打孔(我的朋友小妞听说后问“要打孔啊,要不要我帮你去借个电钻过来啊?”“~!·¥%……·!”)。闲话少说,我们先看一下技术背景:Internet的迅速发展以及IPv4 地址数量的限制使得网络地址翻译(NAT,Network Address Trans2lation)设备得到广泛应用。NAT设备允许处于同一NAT后的多台主机共享一个公网(本文将处于同一NAT后的网络称为私网,处于 NAT前的网络称为公网) IP 地址。一个
阅读全文
使用TCP协议的NAT穿透技术 (转)
摘要:http://www.cnblogs.com/regedit/articles/829725.html其实很早我就已经实现了使用TCP协议穿透NAT了,但是苦于一直没有时间,所以没有写出来,现在终于放假有一点空闲,于是写出来共享之。 一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基本上没有人会告诉你如何使用TCP协议去穿透(甚至有的人会直接告诉你TCP协议是无法实现穿透的)。但是,众所周知的是,UDP是一个无连接的数据报协议,使用它就必须自己维护收发数据包的完整性,这常常会大大增加程序的复杂度,而且一些程序由于某些原因,必须使用TCP协议,这样就常常令一些开发TCP网络程序
阅读全文
UDP穿越NAT原理
摘要:http://blog.csdn.net/ldd909/article/details/5979967论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码)。在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理。首先先介绍一些基本概念: NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。 最开始NAT是运行在路由器上的一个功能模块。 最先提出的是
阅读全文
CASyncSocket类和CSocket类编程
摘要:CASyncSocket类和CSocket类编程 简言之,CSOCKET是对SOCKET API 的高级而又简单的包装,而CAsyncSocket的包装就相对低级, 要求程序员自己处理的细节多,但应用就更灵活,更接近API, CSocket派生于CAsyncSocket,支持同步操作。 CAsyncSocket封装Windows Sockets API windows的socket默认是阻塞模式,CAsyncSocket是非阻塞模式,CSocket是非阻塞模式的阻塞socket.阻塞非阻塞可以通过ioctlsocket函数来设置。 本文主要讲解以下内容 (1)CAsyncSocket类编程模式
阅读全文
用一个工作线程来发送询问命令,等待接收到下位机应答数据后退出。如果两秒下位机未应答,则重发询问命令。重发10次下位机不应答,则认为通信故障,
摘要:http://topic.csdn.net/u/20081107/09/69dbccb7-5da3-4b50-9792-8cd2df37f2b5.html最后用线程同步的方法解决 //初始化同步事件 hTimer=::CreateEvent(NULL,FALSE,FALSE,NULL); //线程中的相关代码 CRecordreaderView *m_pView = (CRecordreaderView *)lParam; ///////////////////// 发送查询命令相关代码 //////////////////// while(::WaitForSingleObject(hTim
阅读全文