1
实验报告
学院:信息工程学院 专业:计算机科学与技术 班级: 课程名称:网络编程
实验名称
实验二 面向连接的 socket 网络编程
学号
姓名
实验时间
2016 年 3 月 24 日
指导老师
实验目的
1)掌握流式套接字编程模型和基本函数的使用;
2)对基于流式套接字的网络程序的可靠性保护有合理的处理方法;
3)掌握基于流式套接字编程的通信过程与原理;
一、实验原理
所有网络程序都是网络上处于不同地理位置的主机上的进程之间的通信,即网间进程的通
信。
既然要通信,必须为网络上的所有进程分配标识,否则就无法通信。网络中用一个三元组
可以在全局唯一标志一个进程:(协议,IP 地址、端口号)。这样一个三元组,叫做一个半相
关(half-association),它指定连接的每半部分。。一个 Socket 句柄就是这样一个三元组(半
相关),定义 Socket 句柄时指定了通信的协议(地址簇、Socket 类型和协议),而调用 bind()
则把指定的终结点(IP 地址、端口号)绑定到 Socket 句柄。
要建立一个连接,必须知道对方的终结点。于是,一个完整的网间通信需要一个五元组来
标识:(协议,本地地址,本地端口号,远地地址,远地端口号)。这样一个五元组,叫做一个
相关(association),即两个协议相同的半相关才能组合成一个合适的相关,或完全指定组成
一连接。当一个 Socket 没有人工指定本地终结点(如调用 Bind())时,系统(基础服务提供
程序)会自动分配一个有效的本地终点,然后再检索以作它用。
一个典型的网间进程通信过程(面向连接)如下所示:
为了达到程序设计要求,需要设计客户端和服务器两个独立的网络应用程序。
服务器首先启动,在设定的端口上等待客户端的连接,如果有客户端连接请求到达,则在