WinSocket
jofranks
这个作者很懒,什么都没留下…
展开
-
【网络编程】之一、初识WinSocket
Winsock是Windows下的网络编程接口,它是由Unix下的BSD Socket发展而来,是一个与网络协议无关的编程接口。 Winsock在常见的Windows平台上有两个主要的版本,即Winsock1和Winsock2。编写与Winsock1兼容的程序你需要引用头文件WINSOCK.H,如果编写使用Winsock2的程序,则需要引用WINSOCK2.H此外还有一个MSWSOCK.H头原创 2012-08-14 20:22:53 · 4088 阅读 · 4 评论 -
【网络编程】之十二、wsaeventselect+线程池 服务器实现
#include#includeusing namespace std;#pragma comment(lib, "WS2_32.lib")typedef struct _SOCKET_OBJ{ SOCKET s; HANDLE event; sockaddr_in addrRemote; _SOCKET_OBJ *pNext;}SOCKET_OBJ, *PSOCKET_O原创 2013-07-20 16:57:43 · 2039 阅读 · 0 评论 -
【网络编程】之十一、重叠IO Overlapped IO 完成例程
完成例程是Win Sockets提供的另一种管理完成的重叠I/O方法,完成例程是一个函数,当发起重叠操作时,将该函数传递给发起操作的函数,当重叠IO操作完成时由系统调用。下面来看一下例程必须拥有下面的函数原型:void CALLBACK CompletionROUTINE{ IN DWORD dwError, //重叠操作的完成状态。 IN DWORD原创 2012-09-20 18:29:33 · 3624 阅读 · 1 评论 -
【网络编程】之十、重叠IO Overlapped IO
winsock2 中引入了重叠I/O(Overlapped I/O)的概念并且要求所有的传输协议提供者都支持这一功能。 他的功能高于前面我们提过的三种,但是最强悍的还是我们后面要说的完成端口。基本原理:让应用程序使用一个重叠的数据结构,一次投递一个活多个winsock I/O请求,针对那些提交的清酒,在他们完成之后,应用程序可为他们提供服务。 应用程序可通过ReadFile和WriteFi原创 2012-09-02 21:16:56 · 7388 阅读 · 0 评论 -
【网络编程】之九、事件选择WSAEventSelect
WSAEventSelect模型是类似于WSAAsyncSelect模型的另一个有用的异步I/O模型。它允许应用程序在一个或者多个套接字上接收以事件为基础的网络事件。 在这里,最主要的差别是在于网络事件会投递到一个事件对象句柄。并不是投递到一个窗口。我们使用事件模型前,我们的应用程序针对使用的每一个套接字首先要创建一个事件对象:WSAEVENT WSACreateEvent(void)原创 2012-09-02 16:49:08 · 2179 阅读 · 0 评论 -
【网络编程】之八、异步选择WSAAsyncSelect
大家用这个模型,可以让应用程序在一个套接字上接收以windows消息为基础的网络事件通知。我们想要用这个操作,具体的做法就是我们建立一个套接字,然后调用WSAAsyncSelect函数, 也就是说,这个模型的核心就是我们的这个函数;来看一下函数原型:int WSAAsyncSelect( _In_ SOCKET s,//我们感兴趣的套接字 _In_ HWND hWnd,//原创 2012-09-02 13:24:03 · 2955 阅读 · 0 评论 -
【网络编程】之六、选择select
select模型在五中模型中是最简单,最容易实现的,当然他的效率当然不如其他四种;select可以去监视一个套接字,看哪个socket有消息到来;int select( _In_ int nfds,//忽略 _Inout_ fd_set *readfds,//一个用于检测可读性的参数 _Inout_ fd_set *writefds,//检查可写性 _Ino原创 2012-08-22 20:48:07 · 1849 阅读 · 0 评论 -
【网络编程】之五、异步模型
注:本文部分转载一:select模型二:WSAAsyncSelect模型三:WSAEventSelect模型四:Overlapped I/O 事件通知模型五:Overlapped I/O 完成例程模型六:IOCP模型老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。这和Socket模型非常类似。下面我就原创 2012-08-22 14:43:15 · 3887 阅读 · 1 评论 -
【网络编程】之七、select聊天室
好久没有用MFC 来写代码了,手都生疏了,悲剧啊,好多API 都去查的 哎~~~好了 下面把 我们聊天室的代码贴出:select函数封装:BOOL CserverDlg::Select_Server(SOCKET sock, int nTime /* = 100 */, BOOL bRead /* = TRUE */){ fd_set fdset; timeval原创 2012-08-28 21:08:03 · 1995 阅读 · 1 评论 -
【网络编程】之三、socket网络编程
前面两篇看socket的入门一些知识还有一些常用的API,现在来解释一些概念,还有就是tcp和udp客户端服务器基本模式!阻塞和非阻塞套接字可以处于阻塞模式或者非阻塞模式,调用任何一个阻塞模式的函数都会产生同样的结果。(用或长或短的时间等待操作的完成) 当套接字处于非阻塞模式的时候,API函数的调用会立即返回,但是大多会失败,返回WSAEWOULDBLOCK错误。意味着请求原创 2012-08-15 15:12:09 · 2148 阅读 · 0 评论 -
【网络编程】之四、socket网络编程例解
前面说了那么多,现在我们给出4个代码+详解,基于win32平台的socket编程。使用TCP 和 UDP 两种协议。OK,先来看一下TCP服务器和客户端:/**************************************************文件名server.cppwindows下socket网络编程实例 -- 服务器端基于TCP服务器地址:'127.原创 2012-08-15 15:12:51 · 8782 阅读 · 2 评论 -
【网络编程】之二、socket API学习
套接字API函数:1、socket函数:The socket function creates a socket that is bound to a specific transport service provider.2、bind函数:The bind function associates a local address with a socket.(一般用于服务器)原创 2012-08-15 11:47:51 · 2636 阅读 · 1 评论 -
【网络编程】之十三、ping程序实现
使用原始套接字:SOCK_RAW需要ICMP代码如下:#include#includeusing namespace std;#pragma comment(lib, "WS2_32.lib")typedef struct icmp_hdr{ unsigned char icmp_type; unsigned char icmp_code; unsigned sho原创 2013-07-24 10:46:30 · 1770 阅读 · 0 评论