文档详情

2016北京理工大学-计算机网络实践-WinSock点对点通信实验报告.doc

发布:2016-11-25约2.34千字共5页下载文档
文本预览下载声明
实验一 WinSock点对点通信程序 一、实验目的: WinSock是Windows操作系统下的Socket编程接口,通过WinSock函数库可以实现基于TCP/IP协议的进程之间通信。 理解基于WinSock的客户/服务器概念 掌握使用WinSock进行编程的方法 了解常见WinSock开发模式的使用 二、实验内容: 基于WinSock开发一个简单的客户/服务器文本传输程序,客户端能够发送由标准输入得到的文本,服务器能够接收并将其显示在标准输出上。 三、实验环境: 程序运行环境为以太网,采用TCP/IP协议栈,网络操作系统为Windows。程序开发环境为vs2012版本。 四、实验步骤: 步骤1 需求分析 程序功能为: (1) 服务器可以接受任何客户的连接 (2) 服务器在同一时刻只能与一个客户通信,直到该客户退出才可以接收下一个客户 (3) 客户程序使用命令行参数指定服务器地址 (4) 客户端输入的文本都发送给服务器 (5) 客户使用Ctrl+C键停止发送,关闭连接 步骤2 服务器程序: 定义全局变量: SOCKET Server; // 服务器端套接字 SOCKADDR_IN Client_Addr; // 请求用户的Ip地址 SOCKET Sock_Conn; // 是否建立连接成功 char Buff_Recv[1024]; // 接收字符缓冲 char Buff_Send[1024]; // 发送字符缓冲区 服务器端主程序及用到的相关函数: void SLoad(); // 加载套接字库 void SCreate(); // 创建套接字 void SBind(); // 绑定套接字到一个IP地址和一个端口上 void SListen(); // 将套接字设置为监听模式等待连接请求 void SAccept(); /* 请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字 */ void SClose(); // 关闭套接字 void SUnLoad(); // 卸载套接字库 void Receive(); // 接受请求 void Send(); // 服务器段发送字符串到客户端 主函数: int main(int argc, char* argv[]) { … /* 循环查询 */ while(1) { SLoad(); SCreate(); SBind(); SListen(); SAccept(); Receive(); SClose(); SUnLoad(); } … } 步骤三、客户端程序: 定义全局变量: SOCKET Client; // 客户端端套接字 SOCKADDR_IN Server_Addr; // 服务器用户的Ip地址 WSADATA wsaData; char Buff_Recv[1024]; // 接收字符缓冲 char Buff_Send [1024]; // 发送字符缓冲区 客户端主程序及用到的相关函数: void SLoad(); // 加载套接字库 void SCreate(); // 创建套接字 void SBind(); // 绑定套接字到一个IP地址和一个端口上 void SAccept(); /* 请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字 */ void SClose(); // 关闭套接字 void SUnLoad(); // 卸载套接字库 void Receive(); //客户端接收字符串到客户端 void Send(); // 发送请求 主函数: int main(int argc, char* argv[]) { … SLoad(); SCreate(); SBind(); SAccept(); /* 循环发送请求 */ while(1) { Send(); } SClose(); SUnLoad(); … } 五、实验效果: 服务器端接收请求: 客户端输入服务器IP地址并等待响应: 客户端选择命令帮助1进行通信 2退出 服务器进行选择是否响应客户端 开始通信: 客户端: 服务器端: 六、实验总结: Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,我们可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 socket实质上提供了进程通信的端点。进程通信之前,双方首先必须
显示全部
相似文档