《计算机网络》实验报告格式.doc_第1页
《计算机网络》实验报告格式.doc_第2页
《计算机网络》实验报告格式.doc_第3页
《计算机网络》实验报告格式.doc_第4页
《计算机网络》实验报告格式.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

黑龙江大学实 验 报 告课程名称计算机网络(Computer Network)实验项目名称Socket通信编程实验时间(日期及节次)第周, 周 4 ,第7 8节专业计算机科学与技术学生所在学院计算机科学技术学院年级2013学号20135266姓名王力国指导教师姜誉 教授实验地点4号楼513实验成绩出勤、预习情况操作技术及结果实验报告附加:综合创新能力实验综合成绩教师签字 黑龙江大学教务处- 5 -实验名称 Socket通信编程实验目的通过本实验掌握socket通信程序的编写、通信原理,实际编写通信程序。本实验是后续实验的基础。实验类型设计型实验环境编程环境:Visual C+ 6.0运行环境:Windows 7实验要求要求做到在一台计算机上实现两个程序的通信,以及在两台计算机上实现两个应用程序的通信。实验内容与步骤 1、实验中主要使用的技术和算法:本实验使用了基于UDP协议下的SOCKET通信技术。分成服务端和客户端2部分:服务器端(接收端)涉及到的流程(算法):(1)、创建套接字(socket)。 (2)、将套接字绑定到一个本地地址和端口上(bind)。(3)、等待接收数据(recvfrom)。(4)、关闭套接字。客户端(发送端)涉及到的流程(算法):(1)、创建套接字(socket)。 (2)、向服务器发送数据(sendto)。(3)、关闭套接字。2、设计思想/ 例如:函数的设计和原因,控制流的设计和原因,接口的设计等;画出模块控制流程图3、编码服务器端:获取本机地址函数:char* getIP() WSADATA swadata;char name255;char* ip;PHOSTENT hostinfo; /包含主机信息的结构体if (WSAStartup(MAKEWORD(2, 0), &swadata) = 0) if (gethostname(name, sizeof(name) = 0) if (gethostbyname(name) != NULL) hostinfo = gethostbyname(name);ip = inet_ntoa(*(struct in_addr*)*hostinfo-h_addr_list);/网络字节序转换成主机序WSACleanup();return ip;主函数:int main()WSADATA wsaData;WORD sockVersion = MAKEWORD(2,2);if(WSAStartup(sockVersion,&wsaData)!=0) /WSAStartup函数被用来初始化Socket环境 return 0;/创建套接字,1.协议族 2.套接字类型(流套接字) 3.使用的通信协议SOCKET sServer = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(sServer=INVALID_SOCKET) printf(socket创建失败!n); return 0;char *ipadd;ipadd=getIP(); /获取本机IP地址sockaddr_in sin;sin.sin_family = AF_INET; sin.sin_port = htons(1129); /将主机字节顺序转为网络字节顺序 sin.sin_addr.S_un.S_addr = inet_addr(ipadd); if(bind(sServer,(LPSOCKADDR)&sin,sizeof(sin) = SOCKET_ERROR) /绑定地址信息 printf(绑定失败!n); return 0;if(listen(sServer,5) = SOCKET_ERROR) /监听状态 printf(监听失败!n); closesocket(sServer); return 0;sockaddr_in remoteAddr;SOCKET sClient;int nAddrLen=sizeof(SOCKADDR_IN);char revData255; /用于存储接收到的数据的数组while(1)printf(nt ip地址%s,ipadd);printf(nt 端口号:1129);printf(nt等待来自客户端的连接!n);/1.套接字 2.套接字结构 3.地址结构长度 用于取出请求 sClient = accept (sServer,(SOCKADDR*)&remoteAddr,&nAddrLen); if(sClient=INVALID_SOCKET) printf(接受失败!n);continue; printf(t这边是服务器端,并且已接受来自%s的连接.nn,inet_ntoa(remoteAddr.sin_addr); printf(:n); while(true) int ret = recv(sClient,revData,255,0); /若成功,返回字节数if(ret=0|(ret=SOCKET_ERROR&WSAGetLastError()=WSAECONNRESET) /网络中断返回0,copy出错返回SOCKET_ERROR printf(nnt%s断开连接n,inet_ntoa(remoteAddr.sin_addr); closesocket(sClient); break;else revDataret=0; printf(客户端:); printf(%s,revData); printf(n); printf(:n); printf(服务器端说:); char info1024,bufBUF_SIZE; gets(info); if(info0=0) break; strcpy(buf,info); /将数据拷贝到缓冲区 int nsend=send(sClient,buf,strlen(buf),0); printf(:n); closesocket(sServer); WSACleanup(); return 0;客户端:if(connect(sClient,(SOCKADDR *)&remote,sizeof(SOCKADDR)=SOCKET_ERROR) /请求连接函数 printf(nt建立连接失败!n); closesocket(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论