好文档 - 专业文书写作范文服务资料分享网站

通信原理实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

通信原理实验报告

-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

学生学号 0121410880117 实验课成绩 学 生 实 验 报 告 书

实验课程名称 开 课 学 院 指导教师姓名 学 生 姓 名 学生专业班级

通信原理

计算机科学与技术学院

刘维 陈鑫宇 软件工程1401

2015

-- 2016 学年

2

学期

2

实验课程名称:______通信原理_________

实验项目名称 实 验 者 同 组 者 陈鑫宇 专业班级 叶旺 软件1401 采用Winsock在有线局域网上的点-点通信 实验成绩 组 别 实验日期 年 月 日 一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等) 实验目的与要求 1. “采用Winsock在有线局域网上的点-点通信” 2. 熟悉VB6.0的控件和界面设计,进而熟悉Winsock的有关控件及编程方法。 3. 在了解所用的两个工作站和服务器的IP地址后,采用VB6.0的控件和Winsock控件编写并调试在有线局域网上的点-点通信程序。 4. 具有点对点通信功能,任意客户端之间能够发送消息。 编译语言与环境 1.编程语言C/C++等均可;本次实验采用C++语言版本 2.安装vs2015或更高版本的Windows系统pc机 3

网络编程是通过使用套接字来达到进程间通信目的的编程,Socket编程是网络编程的主流工具,Socket API是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制,提供了访问下层通信协议的大量系统调用和相应的数据结构。具体流程如上图所示。 1、建立连接 1) 服务程序调用socket创建一个新的套接字,并在传输层实体中分配表空间,返回一个文件描述符用于以后调用中使用该套接字;调用bind将一个地址赋予该套接字,使得远程客户程序能访问该服务程序;调用listen分配数据空间,以便存储多个用户的连接建立请求;调用accept将服务程序阻塞起来,等待接收客户程序发来的连接请求。当传输层实体接收到建立连接的TPDU时,新创建一个和原来的套接字相同属性的套接字并返回其文件描述符。服务程序创建一个子进程处理此次连接,然后继续等待发往原来套接字的连接请求。 2) 客户程序调用socket创建一个新的套接字,并在传输层实体中分配表空间,返回一个文件描述符用于在以后的调用中使用该套接字;调用connect阻塞客户程序,传输层实体开始建立连接,当连接建立完成时,取消阻塞; 2、数据传输 双方使用send和receive完成数据的全双工发送。 3、释放连接 每一方使用close原语单独释放连接。 4

关键代码示例: 服务器端: //定义服务器端socket sockServer = socket(AF_INET, SOCK_STREAM,0); //设置服务器端socket addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//本机IP addrServer.sin_family = AF_INET; addrServer.sin_port = htons(6000); //将服务器socket绑定在本地端口 bind(sockServer, (SOCKADDR *)&addrServer, sizeof(SOCKADDR)); //Listen监听端口 listen(sockServer, 10);//10为等待连接数目 printf(\服务器已启动:\\n监听中...\\n\ len = sizeof(SOCKADDR); while (1) { //accept会阻塞进程,直到有客户端连接上来为止 sockClient = accept(sockServer, (SOCKADDR*)&addrClient, &len); //当客户端连接上来时,拼接字符串 sprintf(sendBuf, \欢迎 ip:%s 的用户连接,这里是陈鑫宇的服务器,欢迎使用\\n\ //向客户端发送字符串 send(sockClient, sendBuf, strlen(sendBuf) + 1, 0); //获取客户端返回的数据 recv(sockClient, recvBuf, 100, 0); //打印客户端返回的数据 printf(\ //关闭socket closesocket(sockClient); } 客户端: // 新建服务器端scoket sockServer = socket(AF_INET, SOCK_STREAM, 0); 5

1pmdl8vxj58xzko02xoc4ddq3430ci00ycf
领取福利

微信扫码领取福利

微信扫码分享