⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d068.bmp.txt

📁 Visual C++通信编程实例
💻 TXT
字号:
第3章Socket通信编程实例
3.1  套接字概述
    套接字( Socket)最初是由加利福尼亚大学Berkeley分校为UNIX操作系统开发的网络
通信接口,是为了将TCPfIP协议集成到UNIX系统中而形成的TCP/IP应用程序接口(API)。
当为客户机/服务器开发一个特殊的应用程序时,可以在客户机/服务器的两端各申请一个
Socket,通过其来交换数据结构或者数据包。因此,Socket是通信端点的一种抽象,它提供
了一种发送和接收数据的机制。
    1991年,由Microsoft联合其他几家公司共同制定了一套Windows环境下的网络编程
接口,使之成为Windows系统下标准、通用的TCP/IP编程接口,并使之类似于UNIX下的
Socket,以便能兼容以往Intemet下的产品。.1994年,它正式被制定为标准,被称为Windows
Sockets规范,.又称Winsock,并通过C语言的动态链接库(dll文件)方式提供给用户。现
在,Windows平台下的Intemet软件都是在Winsock的基础上开发的。目前实际应用中的
Mndows Sockets规范主要有1.1版和2.0版。最初Winsock l.1舨是专门为Intemet设计的,
故其只支持TCP/IP协议。现在的2.x版己经不再仅限于Intemet和TCP/ IP协议。它通过提
供扩展的API编程接口,把自己的应用范围扩大到现存的和正在出现的各种网络和协议,包
括.PSTN、ISDN、无线网、所有的局域网协议、异步传输模式Al'M等。
    套接字是通信端点盼一种抽象,它提供了一种发送和接收数据的机制。Winsock提供了
两种形式的Socket:数据报套接字一(Datagram Sockets)和流式套接字(Stream Sockets)。流
式(也称面向连接方式)套接字采用的是TCP协议,它提供了双向的、有序的、无重复并
且无记录边界的数据流服务。在这种方式下,两个通信的应用程序之间先要建立一种虚拟的
连接。流式套接字的特点是通信可靠,对数据有校验和重发的机制,通常用来作数据文件的
传输,如ftp、telnet等,适合于大量数据的传输。数据报套接字采用的是UDP协议,它建
立在lP协议上,提供无连接数据报传输,支持双向的数据流,但并不保证是可靠、有序、
无重复的。也就是说,一个从数据报套接字接收信息的进程有可能发现信息重复了,或者和
发出时的顺序不同。数据撮文方式由于取消了重发校验机制,能够达到较高的通信速率,可
以用作一些对数据可靠性要求不高的通信,如实时的语音、图像传输等。
    选择使用流式套接字还是使用数据报套接字,对通信效率影响较大。在编程中,流式套
接字与数据报套接字是有区别的。在流式套接字中,服务器首先启动,通过调用socket0建
立一个套接字,然后调用bind()将该套接字和本地网络地址联系在一起,再调用listen()使套
接字做好侦听的准备,并规定它的请求队列的长度,之后就调用accept()来接收连接。客户
在建立套接字后就可调用connect()和服务器建立连接。连接一旦建立,客户机和服务器之间
就可以调用receive()和send()来发送和接收数据。最后,当数据传送结束后,双方调用close()
关闭套接字,如图3-1所示。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -