首页 天津理工大学计算机网络 实验二

天津理工大学计算机网络 实验二

举报
开通vip

天津理工大学计算机网络 实验二天津理工大学计算机网络 实验二 实验报告 学院(系)名称:计算机与通信工程学院 姓名 学号 专业 计算机科学与技术 班级 实验名称 实验二:基于TCP/UDP的Socket编程 课程名称 计算机网络 课程代码 7#219 实验时间 实验地点 批改意见 成绩 教师签字: 1. 实验目的 了解套接字(socket)实现原理。通过编成理解TCP、UDP原理,加深对传输层的功能理解。 2. 实验环境 Windows 7 3. 实验要求 请在以下题目中选择一个,按照要求完成实验,并完成实验报告。实验...

天津理工大学计算机网络 实验二
天津理工大学计算机网络 实验二 实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 学院(系)名称:计算机与通信 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 学院 姓名 学号 专业 计算机科学与技术 班级 实验名称 实验二:基于TCP/UDP的Socket编程 课程名称 计算机网络 课程代码 7#219 实验时间 实验地点 批改意见 成绩 教师签字: 1. 实验目的 了解套接字(socket)实现原理。通过编成理解TCP、UDP原理,加深对传输层的功能理解。 2. 实验环境 Windows 7 3. 实验要求 请在以下 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目中选择一个,按照要求完成实验,并完成实验报告。实验可以分组进行,每2人一组,在报告中注明每个成员的分工。编程可以使用任何高级语言,建议使用java或C++。 (1)基于TCP / UDP的socket编程 a) 利用Java或C++语言,分别基于TCP和UDP编写一个简单的Client/Server网络应用程序。 要求实现客户向服务器传输任意一个字符串,服务器将收到的字符串变换成大写后传回客户。 b) 修改上述程序,实现服务器根据客户请求,将服务器端指定的文件可靠地传输给客户。如果 服务器没有指定的文件,服务器将给客户返回一个信息,通知客户其请求文件不存在。 4. 实验过程记录(源程序、测试用例、测试结果及心得体会等) 源程序: (1)服务端: //server.cpp #include #include #include 第1页 共6页 #include #include #pragma comment(lib, "WS2_32.lib ") using namespace std; void OutErr(string msg) { cout << "错误~发生在 " < 0) { if(FD_ISSET(c,&fdread)) { ReciveBytes=recv(c,data,10,0); if(ReciveBytes==SOCKET_ERROR) { break; } cout << "收到字节数: " < 0); FD_CLR(c,&fdread); closesocket(c); return 0; } int main() { 第2页 共6页 SOCKET server; SOCKET client; SOCKADDR_IN ser_addr,cli_addr; WSADATA wdata; int cliaddrLen=0; UINT port=4000; HANDLE Hnd; DWORD dwThreadID; if(WSAStartup(MAKEWORD(2,0),&wdata)!=0) { OutErr(string( "WSAStartup ")); return 1; } ser_addr.sin_addr.S_un.S_addr=inet_addr( "0.0.0.0 "); ser_addr.sin_family=AF_INET; ser_addr.sin_port=htons(port); //if((server=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_IP,NULL,0,1))==INVALID_SOCKET) if((server=socket(AF_INET,SOCK_STREAM,IPPROTO_IP))==INVALID_SOCKET) { OutErr(string( "WSASocket ")); return 1; } if(bind(server,(SOCKADDR *)&ser_addr,sizeof(SOCKADDR))!=0) { OutErr(string( "bind ")); return 1; } if(listen(server,5)!=0) { OutErr(string( "listen ")); return 1; } while(1) { cliaddrLen=sizeof(SOCKADDR); client=accept(server,(SOCKADDR *)&cli_addr,&cliaddrLen); cout << "客户IP: " < 0) { if(FD_ISSET(client,&fdread))//c中是否属于fdread集合 { do//循环读取,每次接收10个字符,直到把缓冲区中全部取完 { ReciveBytes=recv(client,data,10,0); if(ReciveBytes==SOCKET_ERROR) { //SOCKET错误 break; } data[ReciveBytes]=0;//加上结束符 cout << "收到 " < 0); } } }//while接收数据 if(Hnd==NULL) { CloseHandle(Hnd); closesocket(client); } } closesocket(server); WSACleanup(); return 0; } 第4页 共6页 客户端: //client.cpp #include #include #include #pragma comment(lib, "ws2_32.lib ") using namespace std; void OutErr(string msg) { cout << "错误发生: " <> remote_ip; if(WSAStartup(MAKEWORD(2,2),&wsd)!=0) { OutErr(string( "WSAStartup ")); return 1; } if((c=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_IP,NULL,0,1))==INVALID_SOCKET) { OutErr(string( "WSASocket ")); return 1; } server_addr.sin_addr.S_un.S_addr=inet_addr(remote_ip.c_str()); server_addr.sin_family=AF_INET; server_addr.sin_port=htons(4000); if(connect(c,(SOCKADDR *)&server_addr,sizeof(SOCKADDR_IN))!=0) { OutErr(string( "connect ")); return 1; } do { int SentBytes; cin>> msg; if(msg== "exit ")break; 第5页 共6页 if((SentBytes=send(c,msg.c_str(),msg.size(),0))==SOCKET_ERROR) { OutErr(string( "send ")); break; } }while(1); closesocket(c); WSACleanup(); return 0; } 测试结果: 心得体会: 通过这次的实验,巩固了我以前基础的java知识,了解Socket类与ServerSocket类的作用与用法,会 用一些Socket类与ServerSocket类的重要 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ,初步了解java中用来实现客户端TCP操作Socket类,这 个类本身使用直接代码通过主机操作系统的本地TCP栈进行通信。 第6页 共6页
本文档为【天津理工大学计算机网络 实验二】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_624976
暂无简介~
格式:doc
大小:52KB
软件:Word
页数:10
分类:
上传时间:2018-05-19
浏览量:135