套接字网络编程

套接字网络编程

ID:47162263

大小:41.56 KB

页数:18页

时间:2019-08-14

套接字网络编程_第1页
套接字网络编程_第2页
套接字网络编程_第3页
套接字网络编程_第4页
套接字网络编程_第5页
资源描述:

《套接字网络编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、18.3

2、Windows套接字技术套接字(Socket)是网络通信的基本构件,最初是由加利福尼亚大学Berkeley学院为UNIX开发的网络通信编程接口,它只能运行在UNIX操作系统,不支持DOS和Windows操作系统。随着Windows操作系统的日益推广,90年代初,微软和第三方厂商共同制定了一套标准,即WindowsSocket规范,简称WinSock。本节将介绍有关Windows套接字的相关技术。18.3.1套接字概述套接字的概念与文件句柄类似,一个套接字就是一个通信标识,由一个短整数表示,实际上就是一个句柄,代表网络协议中的一组数据,该数据包含了通信

3、双方的IP地址和当前的连接状态等信息。我们知道,如果一个文件被打开,可以通过文件句柄对文件进行读写操作,套接字也一样,只不过套接字提供的函数更多一些。套接字存在于通信区域中,由协议、地址、端口来描述并惟一确定,根据传输协议的不同,套接字可分为3种类型:流式套接字、数据报套接字和原始套接字。流式套接字提供了一个面向连接的、可靠的、数据无错且按顺序接收的服务,这种套接字对应的是面向连接的传输协议,如TCP/IP协议簇中的TCP。数据报套接字提供了一个无连接服务,不提供无错保证,数据可能丢失或重复,且接受顺序混乱,该套接字所对应的是无连接传输协议,如TCP/IP协议

4、簇中的UDP。原始套接字允许直接访问低层的协议,如IP、ICMP协议,该套接字常用于访问服务器中配置的新设备。18.3.2WinSockAPI相关函数WinSock提供了许多套接字函数,它们并不代表协议的某一个层次,其实质就是一组编程接口,用户利用这些函数可以很容易地进行编程。(1)socket函数socket函数用于创建一个套接字。语法:SOCKETsocket(intaf,inttype,intprotocol);af:标识一个地址家族,通常为AF_INET。type:标识套接字类型,如果为SOCK_STREAM,表示流式套接字;如果为SOCK_DGRAM

5、,表示数据报套接字。protocol:标识一个特殊的协议被用于这个套接字,通常为0,表示采用默认的TCP/IP协议。(2)accpet函数accpet函数用于接受客户端的连接请求。返回值是一个新的套接字,它对应于已经接受的客户端连接,对于该客户端的所有后续操作,都应使用这个新的套接字。语法:SOCKETaccept(SOCKETs,structsockaddrFAR*addr,intFAR*addrlen);s:是一个套接字,它应处于监听状态。addr:是一个sockaddr_in结构指针,包含一组客户端的端口号、IP地址等信息。addrlen:用于接收参数a

6、ddr的长度。(3)bind函数bind函数用于将套接字绑定到一个已知的地址上。如果函数执行成功,返回值为0,否则为SOCKET_ERROR。语法:intbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);s:是一个套接字。name:是一个sockaddr结构指针,该结构中包含了要绑定的地址和端口号。namelen:确定name缓冲区的长度。在定义一个套接字后,需要调用bind函数为其指定本机地址、协议和端口号。例如,创建一个套接字s,将其绑定到3010端口上,其代码如下:intport=3010;SOCK

7、ETs=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);sockaddr_inaddr;addr.sin_family=AF_INET; //内部网络协议TCP/UDP等addr.sin_port=htons(port); //端口号addr.sin_addr.s_addr=htonl(INADDR_ANY);if(bind(s,(LPSOCKADDR)&addr,sizeof(addr))==0){MessageBox("成功");}(4)closesocket函数closesocket函数用于关闭某个套接字。语法:intclo

8、sesocket(SOCKETs);s:标识一个套接字。如果参数s设置有SO_DONTLINGER选项,则调用该函数后会立即返回,但此时如果有数据尚未传送完毕,会继续传递数据,然后才关闭套接字。(5)connect函数connect函数用于发送一个连接请求。如果函数执行成功,返回值为0,否则为SOCKET_ERROR。用户可以通过WSAGetLastError得到其错误描述。语法:intconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen);s:标识一个套接字。name:套接字s想要连接的主机地址和端口号

9、。namelen:name缓冲区的长度

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。