1 / 30
文档名称:

soket基础知识样稿样稿.doc

格式:doc   大小:55KB   页数:30
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

soket基础知识样稿样稿.doc

上传人:非学无以广才 2020/11/14 文件大小:55 KB

下载得到文件列表

soket基础知识样稿样稿.doc

相关文档

文档介绍

文档介绍:WinSock基础知识
 
这里不计划系统地介绍socket或WinSock知识。首先介绍WinSock API函数,讲解阻塞/非阻塞概念;然后介绍socket使用。
 
WinSock API
 
Socket接口是网络编程(通常是TCP/IP协议,也能够是其它协议)API。最早Socket接口是Berkeley接口,在Unxi操作系统中实现。WinSock也是一个基于Socket模型API,在Microsoft Windows操作系统类中使用。它在Berkeley接口函数基础之上,还增加了基于消息驱动机制Windows扩展函数。,。这里,讨论TCP/IP网络上API。
Socket接口包含三类函数:
第一类是WinSock API包含Berkeley socket函数。这类函数分两部分。第一部分是用于网络I/O函数,如
accept、Closesocket、connect、recv、recvfrom、Select、Send、Sendto
另一部分是不包含网络I/O、在当地端完成函数,如
bind、getpeername、getsockname、getsocketopt、htonl、htons、inet_addr、inet_nton
ioctlsocket、listen、ntohl、ntohs、setsocketopt、shutdow、socket等
第二类是检索相关域名、通信服务和协议等Internet信息数据库函数,如
gethostbyaddr、gethostbyname、gethostname、getprotolbyname
getprotolbynumber、getserverbyname、getservbyport。
第三类是Berkekley socket例程Windows专用扩展函数,如gethostbyname对应WSAAsynGetHostByName(其它数据库函数除了gethostname全部有异步版本),select对应WSAAsynSelect,判定是否阻塞函数WSAIsBlocking,得到上一次Windsock API错误信息WSAGetLastError,等等。
从另外一个角度,这些函数又能够分为两类,一是阻塞函数,一是非阻塞函数。所谓阻塞函数,是指其完成指定任务之前不许可程序调用另一个函数,在Windows下还会阻塞本线程消息发送。所谓非阻塞函数,是指操作开启以后,假如能够立即得到结果就返回结果,不然返回表示结果需要等候错误信息,不等候任务完成函数就返回。
首先,异步函数是非阻塞函数;
其次,获取远地信息数据库函数是阻塞函数(所以,WinSock提供了其异步版本);
在Berkeley socket函数部分中,不包含网络I/O、当地端工作函数是非阻塞函数;
在Berkeley socket函数部分中,网络I/O函数是可阻塞函数,也就是它们能够阻塞实施,也能够不阻塞实施。这些函数全部使用了一个socket,假如它们使用socket是阻塞,则这些函数是阻塞函数;假如它们使用socket是非阻塞,则这些函数是非阻塞函数。
创建一个socket时,能够指定它是否阻塞。在缺省情况下,BerkerleySocket函数和WinSock全部创建“阻塞”socket。阻塞socket经过使用select函数或WSAAsynSelect函数在指定操作下变成非阻塞。WSAAsyncSelect函数原型以下。
int WSAAsyncSelect(
SOCKET s,
HWND hWnd,
u_int wMsg,
long lEvent
);
其中,参数1指定了要操作socket句柄;参数2指定了一个窗口句柄;参数3指定了一个消息,参数4指定了网络事件,能够是多个事件组合,如:
FD_READ 准备读
FD_WRITE 准备写
FD_OOB 带外数据抵达
FD_ACCEPT 收到连接
FD_CONNECT 完成连接
FD_CLOSE 关闭socket。
用OR操作组合这些事件值,如FD_READ|FD_WRITE
WSAAsyncSelect函数表示对socket s监测lEvent指定网络事件,假如有事件发生,则给窗口hWnd发送消息wMsg。
假定应用程序一个socket s指定了监测FD_READ事件,则在FD_READ事件上变成非阻塞。当read函数被调用时,不管是否读到数据全部立即返回,假如返回一个错误信息表示还在等候,则在等候数据抵达后,消息wMsg发送给窗口hWnd,应用程序处理该消息读取网络数据。
对于异步函数调用,以类似过程