




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、洛阳理工学院实验报告系别计算机系班级B120503学号B12050316姓名段浴课程名称计算机网络实验日期2014/11/8实验名称简单的客户/服务器程序设计与实现成绩实验目的:编程环境。1、熟悉Micioso代Visual Studio 2008协议,以及它们之间的区 别八了解TCP与UDP2服务器模型原理。3、了解客户/4、熟悉Socket编程原理,掌 握简单的套接字编程。实验条件:(两台以上)、网卡、已经设定好的以太网环境硬件:PC机Microsoft Visual Studio 2008 软件:实验原理:1、编写用TCP协议实现的Client端和Server端程序并调试通过。Socke
2、t。建立流式套接字,返回套接字号。客户方bmd(),套接字s与本地地址相连。listen。,通知TCP,服务器准备好接收连接。accept。,接受连接,等待客户端的连接.连接建立,accept。返回,得到新的套接字SocketQ,建立流失套接字,返回套接字号connect。,将套接字地主机连接S与远,SCsend()/recv(),写数据,直到数据 交换完在套接字上 读直到数上读sc/写数据,recvt()/send(),在套接字据 交换完毕关闭套接字SC服务结束S,closesocket。,结束 TCP关闭套接字 对话closesocketQ,关闭最初套接字 closesocketQ>
3、1 /IO程序分两部分:客户程序和服务器程序。服务器首先启动,它创建套接字之后等待客 户的连接;客户启动后工作过程是:创建套接字,然后和服务器建立连接;建立连接后,客户接收键盘输入,然后将数据发 送到服务器,服务器收到到数据后,将接收到的字符在屏幕上显示出来。或者服务器接 收键盘输入,然后将数据发送到客户机,客户机收到数据后,将接收到的字符在屏幕 上显示出来。端程序并调试通过(做完第一个实验的Serve】端和UDP协、议实现的Client2、编写用。 基础上做该实验)客户方服务器方建立流式套接字,返回套接字号。SocketOs与本地地址相连。bind。,套接字/recvt()£sen
4、dO,在套接字上读写数据,直到数据交换完毕closesocket。,关闭套接字ServerClient端与端的一段对话程序。TCP3,编写用协议实现端下一步将要进行操作。 入来提示ClientSocket。,建立流失套接字, 返回套接字号将套接字与远地主机连接send()/recv(),写数据,直到数据交换完/在套接字上 读closesocket(),结束 UDP关闭套接字 对话端根据用户的输Server/ 210实验 内容:端代码t Sever定义控制台应用程方:的入口点。力server.cpp :#include <xx-insock.li>#include <windo
5、、sh>#include <$tdio.h>#include <stdlib.h>#pragma comment(lib, WS2_32)SOCKET sockl,sock2;int sin_size :stract sockaddr_in my_addr、their_addr:char name20;Tcp夕初始化函数void InitOTCPji'n'n); Server:prmtf(n'n建立套接字const WORD wMinvei=0x0101;WSADATA wsadata:if(O !=: WSAStartup(*MinYer
6、、&wsadata) penor(Start socket enor!);ALID_SOCKET=(sockl=:socket(AF_INET、SOCK_STREAM.O)ifUNV perror(Create socket error!);my_addr. sm_family=AF_INET;my_addr. sin_addr S_un. S_addr=INADDR_ANY;my_addr. sinj)ort=htons(1000);if(SOCKET_ERROR=: :bind(sockl /struct sockaddrJ&my-addr.sizeofCmy-addr)
7、(perror(Binding stream socket);exit(l);)开始侦听if(SOCKET_ERROR=:hsten(sockl.5) penor(Listening stream socket); exit(l);接受连接 /Ready to serve client. Please connect.nnn); sin_size = sizeof(stnict sockaddr_m);printf(if(sock2=accept(sockl .(stnict sockaddr *)&their-addr,&sm-size)=-1) (perror(Accept
8、ing stream socket);exit(l);)Accepting a new connet:%s.inet_ntoa(their_addr.sin_addr); printf()选择菜单int menuOchar *$=(char*)nialloc(2*sizeof(cliar);int c;Menu h(n'ji); Server: n'nprintf('.*#疝 口)n);Message*l.Send printf(n);Message*2 Receiveprintf(挈疝川;*3 .Exitprintfl:printfl;*«*«*&
9、#171;*«*«*«*«*doEnter your choice:);printfl;'.gets(s);】心1Q) gets(s);) c=atoi(s);while(c<0|:c>3);free(s);return c;)prmtf(消总发送函数void SendO charMsg10240;printfV'Please Input the message:);gets(Msg);Msg10239=0,;/ 410:send(sock2.M$g.strlen(Msg).0);)"消息接收函数void Recei
10、veO (int len;charb<10240;forint i=0:i<10240;i)buf!i='Q:)if(len=: :rec<sock2 .biif.l 0240.0)=-1) penor(Receing data error); exit(l);)printf(The Received Mes$age:%s'ii,buf);)主函数/void mainO( InitO; fbr(:;) switch(meimO) case 1: SendO; break: case 2:ReceiveO; break: case 3:exit(O);)/: :
11、close$ocket($ock2);:closesocket(sock 1);/510:WSACleanupO:)Client端代码:,定义控制台应用程序的入口点。client.cpp:#include <xxiiisock.h>#include GindoNsh#include <$tdio.h>#include <$tdlib.h>#pragma comment(lib, WS2_32)SOCKET sockl,sock2;int sin_size;stract sockaddr_in my_addr、their_addr:char name20;To
12、p初始化函数,'7voidInitOTCPn'n'n); Client:nn建立套接字const WORD wMinver=0x0101;WSADATA wsadata:if(O!=:WSAStarnip(wMmver,&wsadata)perror(Start socket error!);ALID_SOCKET=(sockl=:socket(AF-INET,SOCK-STREAM,0) if(INV perror(Create socket error!);my_addr.sin_fhniily=AF_NET;my_addr.sin_addr.S_un.S_
13、addr=iiiet_addr(92.168.93.48);my_addr. sin_port=htons(1000);H 请求连接 connecting.);printf(sm_size = sizeof(stnict sockaddr_m);if(sock2=(:coiinect(sockl,(LPSOCKADDR)&my_addr.siii-size)=-l) perror(Acceptmg stream socket);exit(l);)/ 610选择菜单int menu()char *s=(char*)malloc(2*sizeof(char);mt c; Client: n
14、n MenuMSn);printf(print3*w*g*R*W)* n); Message 2 .Receive * n); 3.Exit* prmtf(* nn);Message l.Sendprintf(printf(print3*、).doEnter your choice:);printf(gets(s);1f(s0=(0,)gets(s);)c=atoi(s);while(c<0|c>3);free(s);return c;)消息发送函数void SendO(char Msg 10240;printf(Please Input the message:);gets(Ms
15、g);Msg10239=f0,;:send(sock 1 ,Msg,strlen(Msg) .0);)消息接收函数“void Receive。/ 710int len;char buff 10240;fbr(int i=0;i<l 0240bufi=,0*;)if(len=: :recv(sockl ,buf. 10240.0)=-1)perror(Recewmg data error);exit(l);)printf(The Received Message:%sn?buf):)主函数/void inainO (foK:;) switch(menuO) case 1:Send();br
16、eak:case 2:ReceiveO: break:case 3: exit(O);) ):closesocket(sock2): :closesocket(sockl); :WSACleanup(); )/ 810买3佥结果端界面:发送信息ServerE: 计嵬机网络'实英七'ClientDelmgClient-execonnect ing.Clievit : Menu1.Send Message2 .Receiue Message3 .ExitEnter your choice:1Please Input the neasage :R120?>0216 duanyuClient: Menu端界面:接收信息Server6 E:计3?机网络'实若七SeverDebugSever. exe910实验总结在老师的精心指导和自己的努力下最终成功完成了本次的实验内容,虽然在过程中遇到 好多问题,在老师和同学们的帮助下最后顺利完成。在此试验中通过老师的讲解和自己 的动手操作,通过本次实验我了解了一些路由器的基本配置,也学会使用了子网划分的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《记承天寺夜游》板书设计
- 建筑设计电脑出图排版标准
- 2025西交利物浦大学辅导员考试试题及答案
- 2025辽宁兵器工业职工大学辅导员考试试题及答案
- 2025潍坊科技学院辅导员考试试题及答案
- 新生儿贫血护理要点解析
- 毕业设计实训答辩
- T/ZBH 022-2023薄膜太阳能电池用FTO导电玻璃
- 河南投资集团工程管理有限公司招聘笔试题库2025
- 小学生健康卫生知识讲座
- 2023-2024学年四川省南充市嘉陵区五年级数学第二学期期末统考模拟试题含解析
- 大众汽车整车开发标准流程
- 教科版五年级下册科学期末测试卷含答案
- DL-T5169-2013水工混凝土钢筋施工规范
- 水暖、电气施工方案
- 单元三 防火防爆技术 项目三 点火源控制 一、化学点火源
- 原神游戏介绍PPT
- JTT663-2006 公路桥梁板式橡胶支座规格系列
- 学生退学家长委托书
- 高速公路投诉培训课件
- 交通劝导员上岗培训课件
评论
0/150
提交评论