资源描述:
《通信原理实验资料报告材料.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、学生学号17实验课成绩学生实验报告书实验课程名称通信原理开课学院计算机科学与技术学院指导教师维学生姓名鑫宇学生专业班级软件工程14012015--2016学年第2学期实验课程名称:______通信原理_________实验项目名称采用Winsock在有线局域网上的点-点通信实验成绩实验者鑫宇专业班级软件1401组别同组者叶旺实验日期年月日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)实验目的与要求1.“采用Winsock在有线局域网上的点-点通信”2.熟悉VB6.0的控件和界面设计,进而熟悉Wins
2、ock的有关控件及编程方法。3.在了解所用的两个工作站和服务器的IP地址后,采用VB6.0的控件和Winsock控件编写并调试在有线局域网上的点-点通信程序。4.具有点对点通信功能,任意客户端之间能够发送消息。编译语言与环境1.编程语言C/C++等均可;本次实验采用C++语言版本2.安装vs2015或更高版本的Windows系统pc机网络编程是通过使用套接字来达到进程间通信目的的编程,Socket编程是网络编程的主流工具,SocketAPI是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制,提供了访问下层通信协议的大量系统调用和相应的数据结
3、构。具体流程如上图所示。1、建立连接1)服务程序调用socket创建一个新的套接字,并在传输层实体中分配表空间,返回一个文件描述符用于以后调用中使用该套接字;调用bind将一个地址赋予该套接字,使得远程客户程序能访问该服务程序;调用listen分配数据空间,以便存储多个用户的连接建立请求;调用accept将服务程序阻塞起来,等待接收客户程序发来的连接请求。当传输层实体接收到建立连接的TPDU时,新创建一个和原来的套接字相同属性的套接字并返回其文件描述符。服务程序创建一个子进程处理此次连接,然后继续等待发往原来套接字的连接请求。2)客户程序调用socket创
4、建一个新的套接字,并在传输层实体中分配表空间,返回一个文件描述符用于在以后的调用中使用该套接字;调用connect阻塞客户程序,传输层实体开始建立连接,当连接建立完成时,取消阻塞;2、数据传输双方使用send和receive完成数据的全双工发送。3、释放连接每一方使用close原语单独释放连接。关键代码示例:服务器端://定义服务器端socketsockServer=socket(AF_INET,SOCK_STREAM,0);//设置服务器端socketaddrServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//
5、本机IPaddrServer.sin_family=AF_INET;addrServer.sin_port=htons(6000);//将服务器socket绑定在本地端口bind(sockServer,(SOCKADDR*)&addrServer,sizeof(SOCKADDR));//Listen监听端口listen(sockServer,10);//10为等待连接数目printf("服务器已启动:监听中...");len=sizeof(SOCKADDR);while(1){//accept会阻塞进程,直到有客户端连接上来为止sockClient
6、=accept(sockServer,(SOCKADDR*)&addrClient,&len);//当客户端连接上来时,拼接字符串sprintf(sendBuf,"欢迎ip:%s的用户连接,这里是鑫宇的服务器,欢迎使用",inet_ntoa(addrClient.sin_addr));//向客户端发送字符串send(sockClient,sendBuf,strlen(sendBuf)+1,0);//获取客户端返回的数据recv(sockClient,recvBuf,100,0);//打印客户端返回的数据printf("%s",recvBuf);//
7、关闭socketclosesocket(sockClient);}客户端://新建服务器端scoketsockServer=socket(AF_INET,SOCK_STREAM,0);//定义要连接的服务端地址addrServer.sin_addr.S_un.S_addr=inet_addr("10.139.14.180");//目标IP(100.64.175.119是本机地址)addrServer.sin_family=AF_INET;//协议类型是INETaddrServer.sin_port=htons(6000);//连接端口1234//让sock
8、Client连接到服务端connect(sockServer,(S