《网络编程》 实验报告 课 程 名 称: 网络编程 实验项目名称: 网络编程 班 级: 实 验 室 名 称: 专 业: 网 络 工 程 * * * 师: * * * 学 号: 姓 名: 基于TCP 的网络文件传输实验报告 一、 实验目的 1、 熟悉 TCP/IP 协议的功能和网络操作 2、 编写小型的socket 应用程序,初步了解 windows 环境下使用 sockets编程,实现点对点文本传输。 二、 实验原理 本程序是基于TCP/IP 协议栈的网络编程,使用 C 语言,利用操作系统提供的套接字网络编程接口进行编写 TCP 协议是其中重要的传输协议,为应用层提供可靠的 端到端的流传输服务.其中套接字取值 sock_stream 即为 TCP 的流传输服务 Windows socket 包含了人们所熟悉的Berkeley Socket 风格的函数库,也包含了一组针对 windows 的扩展库函数,以使程序员能充分的利用 windows驱动消息机制进行编程。 Windows Sockets 的规范本意在于提供给应用开发者一套简单的API,并让个网络应用软件开发商遵守该协议。此外在一个特定的版本 windows基础上,Windows socket 也定义了一个二进制借口(ABI),从此来保证Windows socket API 应用程序能够在任何符合Windows socket 协议的实现上工作。 三、 设计概述 1、 创建套接字 服务进程和客户进程在实现通信前必须创建各自的套接字,然后 才 能用相应的套接字进行发送 接收 操作,服务进程总 是先 于客户端进程启 动,服务器 端进程和客户端进程创建套接字。Socket( ) 函数实现代 码 如 下: SOCKET serSocket=socket(AF_INET,SOCK_STREAM,0);//创建了可识 别套接字 2、 地址绑定 当 调 用 socket( ) 创建套接字后 ,服务器 必须把 套接字与 自己 的地 址 显 式地 建立 联 系,以便 客户端向 该 IP 地 址 和端口号 的服务进程请 求 服务,这个过 程是通过 调 用函数 bind( ) 实现的。bind()函数原型如 下: int bind( SOCKET s ,const struct sockaddr FAR*name ,int namelen) ; 3、 服务器套接字置为监听模式 将服务器设置为监听工作方式后,使用API 调用listen(): int listen(SOCKET s, int backlog); 第一个参数指定套接字。第二个参数指定了正在等待连接的最大队列长度。若无错误发生,则listen()函数返回0。 4、 建立连接,进行文件传输 调用gets(path)获得传输文件的路...