预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第13卷第4期武汉科技学院学报Vo1.13No.4 2000年12月JOURNALOFWUHANINSTITUTEOFSCIENCEANDTECHNOLOGYDec.2000 WindowsSockets网络编程 李红军赵玉娇赵伟 (机械系)(图书馆)(教务处) 摘要在对WindowsSockcts网络编程作简要介绍的基础上,对在VisualC++6.0环境下如何进 行网络编程以及如何使用多线程进行网络编程作了介绍和示范。 关键词网络套接字阻塞多线程 中图分类号TP393 1WindowsSockets简介 Windowssockets(简称Winsock)是微软的窗口系统结构(WOSA)的一部分。它是起源于 UNIX上的BerkeleySoftwareDistribution(BSD)版本的套接字、并为Windows进行了专门地扩展。 Internet是在UNIX系统上发展起来的,在UNIX上有许多成熟的编程接口,其中最通用的是一 种叫做sockets(套接字)的接口。套接字的实质是通信端点的一种抽象,它提供一种发送和接 收数据的机制。网络软件商为Windows开发一套标准的、通用的TCP/IP编程接口,并使之类 似于UNIX下的sockets,这就是Windowssockets;Windowssocket的实现一般都由两部分组成:开 发组件和运行组件。开发组件是供程序员开发Winsock应用程序使用的、它包括介绍Winsock 实现的文档、Winsock应用程序接口(API)引入库和一些头文件。运行组件是Winsock应用程 序接口的动态连接库(DLL),文件名为Winsock.DLL,应用程序在执行时通过装入它来实现网 络通信功能。 最初,Winsocket1.1版是专门为Internet设计的,现在的2.x版己经不再限于Internet和 TCP/IP协议,它通过提供扩展的API编程接口,把自己的应用范围扩大到现存的和正在出现 的各种网络和协议,包括PSTN、ISDN、无线网、所有的局域网协议、异步传输模式ATM等等;并 且允许应用程序对所建立连接的可靠性、冗余度和带宽进行控制。由此可见,Winsock有着广 泛的应用。 Windowssockets是Windows下网络编程的规范。这套规范是Windows下得到广泛应用的、 开放的、支持多种协议的网络编程接口。它定义并记录了如何使用API与Internet协议族(IPs、 通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windowssockets实现都支持流套接字和 收稿日期:2000-8-25 作者简介:李红军,男,(1974-);武汉,武汉科技学院(430073) 第4期李红军等:WindowsSockets网络编程17 数据报套接字。当我们为客户机/服务器开发一个特殊的应用程序时,我们可以通过套接字来 交换我们的数据结构和数据报,以完成应用程序之间的通信。应用程序调用Winsock的API 实现相互之间的通讯。Winsock又利用下层的网络通讯协议功能和操作系统调用实现实际的 通讯工作。它们之间的关系如图1所示: 应用程序1应用程序2 xx yy 网络编程界面,例如WindowsSockets xy 网络通讯协议服务界面,例如TCP/IP xy 操作系统,例如Windows98,WindowsNT,Dos6.22 xy 物理通讯介质 图1应用程序与WinsoCk关系图 2套接字的两种主要形式 在Windows套接字中,它主要有两种形式:数据报套接字(Datagramsocket)和流式套接字 (Streamsocket)。流式(也称面向连接方式)套接字采用的是TCP协议,它提供了双向的,有序 的,无重复并且无记录边界的数据流服务。在这种方式下,两个通讯的应用程序之间先要建立 一种虚拟的连接。流方式的特点是:通讯可靠,对数据有校验和重发的机制,通常用来作数据 文件的传输如ftp,telnet等,适合于大量数据的传输。 数据报套接字采用的是UDP协议,它建立在IP协议上,提供无连接数据报传输,支持双向 的数据流,但并不保证是可靠、有序、无重复的。也就是说,一个从数据报套接字接收信息的进 程有可能发现信息重复了,或者和发出时的顺序不同。数据报文方式由于取消了重发校验机 制,能够达到较高的通讯速率,可以用作一些对数据可靠性要求不高的遮讯,如实时的语音、图 象传输等。另外,数据报套接字支持广播发送,使用setsockopt()函数可以使指定的套接字发送 广播消息。相比之下,流式套接字不支持广播发送。 是使用流式套接字还是使用数据报套接字,对通信效率影响较大。在编程中,流式套接字 与数据报套接字是有区别的。在流式套接字中,服务器首先启动,遮过调