实验三 socket 套接字编程实验指导
一、Sockets 编程基础知识
网络编程就是通过计算机网络与其他程序进行通信的程序,Socket 编程是网络编程的
主流工具。
Socket API 是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机
制。尽管应用开发人员很少需要在该层编写代码,但是理解 socket API 还是非常重要的。
主要有两点原因:第一,高层设施是构建于 socket API 之上的,它们是利用 socket API
提供的操作来实现。第二,对于响应时间要求较高或运行于有限资源平台上的应用,甚至
socket API 是唯一可用的进程间通信设施。
socket API 出现于 20 世纪 80 年代早期,作为 Berkeley Unix(BSD 4.2)操作系
统程序库来通过进程间通信功能。现在主流操作系统都提供 socket API。在基于 Unix 系
统 中 , 如 BSD 、 Linux 系 统 , socket API 是 操 作 系 统 内 核 的 一 部 分 ; 在 MS-
DOS、Windows OS、OS/2 等操作系统中,socket API 是以程序库形式提供的,如在
Windows 系统中,socket API 被称为 Winsock。
Socket 接口规范可以适用多种通讯协议,主要是 TCP/IP。TCP/IP 是计算机互联最常适
用的网络通讯协议,TCP/IP 的核心部分由网络操作系统的内核实现,应用程序通过编程接
口来访问 TCP/IP,应用程序通讯的方式有图 3-1 所示。
图 3-1:应用程序通信方式
TCP/IP 使用一个网络地址和一个服务端口号来惟一地标识设备。网络地址标识网络上
的特定设备;端口号标识要连接到的该设备上的特定服务。网络通讯的基本模式如下:每
一台通讯的主机都有一个本网络环境中惟一的 IP 地址,一台主机上往往有多个通讯程序存
在,每个这样的程序都要占用一个通讯端口。因此,一个 IP 地址,一个通讯端口,就能确
定一个通讯程序的位置。
二、Socket 通讯连接方式
Socket 主要有三种通讯方式:流式 Socket、数据报 Socket 和原始 Socket。
1.流式 Socket(SOCK_STREAM)
流式套接字提供了基于 Unix 操作系统的流式 I/O 的数据传输模式,它仅仅支持通过可
应用程序 1
应用程序 2
网络编程接口,如 Socket
网络通讯服务接口,如 TCP/IP
操作系统,如 Unix 或者 Windows
物理通讯介质