网络编程
神牛BB
精湛技术狂
展开
-
使用TCP协议的NAT穿透技术 (转)
其实很早我就已经实现了使用TCP协议穿透NAT了,但是苦于一直没有时间,所以没有写出来,现在终于放假有一点空闲,于是写出来共享之。 一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基本上没有人会告诉你如何使用TCP协议去穿透(甚至有的人会直接告诉你TCP协议是无法实现穿透的)。但是,众所周知的是,UDP是一个无连接的数据报协议,使用它就必须自己维护收发数据包的完转载 2015-07-27 20:11:59 · 508 阅读 · 0 评论 -
套接字IO模型(一) Select模型
套接字IO模型(一) Select模型讲一下套接字模式和套接字I/O模型的区别。先说明一下,只针对Winsock,如果你要骨头里挑鸡蛋把UNIX下的套接字概念来往这里套,那就不关我的事。套接字模式:阻塞套接字和非阻塞套接字。或者叫同步套接字和异步套接字。套接字模型:描述如何对套接字的I/O行为进行管理。Winsock提供的I/O模型一共有五种:select,WSAAsync转载 2015-07-29 22:28:14 · 549 阅读 · 0 评论 -
套接字IO模型(二) WSAAsynSelect模型
WSAAsynSelect模型也是一个常用的异步I/O模型。应用程序可以在一个套接字上接收以WINDOWS消息为基础的网络事件通知。该模型的实现方法是通过调用WSAAsynSelect函数自动将套接字设置(转变)为非阻塞模式,并向WINDOWS注册一个或多个网络事件,并提供一个通知时使用的窗口句柄。当注册的事件发生时,对应的窗口将收到一个基于消息的通知。 1 #includ转载 2015-07-29 22:34:14 · 578 阅读 · 0 评论 -
套接字IO模型(三) WSAEventSelect模型
WSAEventSelect模型类似WSAAsynSelect模型,但最主要的区别是网络事件发生时会被发送到一个事件对象句柄,而不是发送到一个窗口。这样可能更加的好,对于服务器端的程序来说。使用步骤如下:a、 创建事件对象来接收网络事件:WSAEVENT WSACreateEvent( void );该函数的返回值为一个事件对象句柄,它具有两种工作状态:已传信(si转载 2015-07-29 22:38:33 · 522 阅读 · 0 评论 -
Windows 套接字I/O 模型
windows提供了一些I/O 模型帮助应用程序以同步或者异步方式在一个或者多个套接字上管理I/O。大体上,这样的I/O 模型共有6 种。阻塞(blocking)模型选择(select)模型WSAAsyncSelect模型WSAEventSelect 模型重叠(overlapped)模型完成端口(completion port)模型1.阻塞(blocking)模型在转载 2015-07-29 21:00:14 · 552 阅读 · 0 评论 -
WINDOWS重叠IO模型
一. 重叠IO模型简介重叠IO的核心实际上就是一个重叠的数据结构。应用程序在单个套接字上投递一个或者多个IO操作,当IO操作完成时对应的重叠数据结构中的事件对象会受信,相应的应用程序通过查事件对象可以得到通知。就这样,通过重叠的数据结构将异步的IO和程序连接起来了。 重叠数据结构: typedef struct _OVERLAPPED{ DWO转载 2015-07-30 21:03:15 · 2647 阅读 · 0 评论