欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    实验十一网络编程.docx

    • 资源ID:330365       资源大小:202.75KB        全文页数:23页
    • 资源格式: DOCX        下载积分:5
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要5
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验十一网络编程.docx

    1、嵌入式操作系统应用开发课程实验报告级:*号:*指导老师:*旅京*京*京成绩,实验十一网络编程一、目的与任务目的:r解掌握网络编程的特点与功能,学会借助网络系统的功能函数进行编程。任务:利用c语言指令编写程序调用网络系统函数,完成相应网络访问功能。二、内容、要求与安排方式1、实验内容与要求:1)利用地址处理函数访问网络地址以及编程实现域名与IP估息解析.2)实现UDpnt与组播通信功能.3)练习版始套接口基本应用。2,实照安排方式;采用1人1级,上机在1.inUx系统下进行编程实验,三、程序清单(I)TCP服务器和TCP客户端通信1.1 服务器代码:/inc1.ude#inc1.udc#inc1

    2、ude/inc1.ude#inc1.udc#inc1.udeintmain()intSoCkfd,c1.ienUd;以OCk_fd-监听套接字描述符:C1.ien1.S-连接套接字描述符structSockaddjinmy_addr:本机地址structsockaddrinremote_addr;客户端地址创建套接字if(sockfd=SOCket(AF_1NET,SOCK_STREAM.0)=-1.)Ipeor(socket);exit(1.);设置地址端口可重用intva1.=1.;SCIS(KkOP1.(sockf(J,SO1.-SOCKET.SO-REUSEADDR.(char*)&

    3、va1.sizeof(va1.);设置本地地址信息my_addr.sinJatniIy=AFJNET;协议族my_addr.sin_port=htons(3333);端11my_addr.sin_addr.s_addr=inet_addr(127.0.0.1):/1P地址bzero(&(n)y_addr.sin_zero),8);填充0绑定地址到套接字描述符上if(hind(sockfd.(structsockaddr*)&my_addr,sizeo(structsockaddr)=-1)Perror(bind,;cxit(1.);)在地址端口上监听if(1.iscn(sockfd.10)=-

    4、I)Ipcor(1.isten);cxit(1.);等待客户端连接,如果有客户端连接,则产生新的连接套接字intsin-size=sizeof(structSOCkaddjin);if(c1.ient_fd=accet(sock1.j,(structsockaddr*)&reinote_addr,&sin_size)=-DIPC1.TOr(accept);cxit(1.);输出客户端IP地址rintf(receivedaconnectionfrom%sn.inet_ntoa(remote_addr.sin_addr):向客户端发送欢迎信息if(scnd(c1.icnt.fd.He1.1.o,y

    5、ouarcconnected!n.26.0)=-I)PCrroreSCIKrXC1.OSe(CIien1.fd);exit(2);关闭连接套接字c1.oe(c1.ient-M);关闭监听套接字C1.ose(SockId);return0;)1.2 客户端代码:#inc1.udc#inc1.ude#inc1.udc#inc1.udc#inc1.ude#inc1.udcintnain(intargc,char*argv)intsockfd.rccvbytcs:charbu1110();structhos(cnt*host;structsockaddr_inSCrV_addr:创建套接字if(soc

    6、kM=socket(h,!NET.SOCK_STREAM.0)=-1.)pcor(socket);exit(1.):设置服务器地址结构体serv_addr.sin_faini1.y=AF_INET;scrv_addr.sin_p)rt=htons(3333);serv_addr.sin_addr.s_addr=inet_addr(1.27.0.0.,);bzero(&(serv-addr.sin-zero),8);向服务器发起连接if(connect(sockfd,(structsockad1.r*=)&serv_addr,sizeof(structsockaddr)=-I)(pcor(con

    7、nect);exit(1.);接收服务错端信息并显示if(rccvbytcs=rccv(sockfd.buf.I(X).0)=-1)eror(recv);cxi1.(I);bu11recvbytes=O;设置字符串结尾rintf(Received:%s,buf);关闭套接字c1.ose(sockfd);return0;(2)UDP服务器和UDP客户端通信2.1 UDP服务器代码;#inc1.ude/inc1.ude#inc1.udcSinc1.ude/inc1.ude#inc1.udeintnain()(intsockfd:套接字描述符structsockaddr_inserver;struc

    8、tSockaddrJnc1.ient;intsin_sizc;intnum;charmsgI00;charSbUiI1OO=Wetomyserver.;if(sockfd=SoCket(AFNET.SOCK_DGRAM.0)=-1)PC1.Tor(socket);cxit(1);bzero(&scncr.sizcof(scncr):server.sin_famiIy=AF_1NET:scrvcr.sin-port=htons(3333);server.sin_addr.s_addr=inct-addr(192.168.245.128);if(hind(sockk1.,(structsockad

    9、dr*)&server,SiZeOf(S1.rUCIsockaddr)=-I)error(bind);exit(1.);sin_sizc=sizcof(StRic1.SoCkaddr_in);whi1.e(1)(nm=rccvfro11(sockf1.msg.I(X),O,(structsockaddr*)&c1.ient.&sin_size):if(numO)error(recvfrom);cxit(1.);msgnum=;printf(Yougotamessage(%s)from%sn,msg,inct_ntoa(c1.icnt.sin_addr);strcpy(sbuf.msg);scn

    10、dto(sb0.0,(structsockaddr*)&c1.icnt,sin_sizc);if(!strcnp(msg.quit)break:CIoSe(SOCkfd);Hc1.oseIistcnfdreturnO;)2.2UDP客户端代码#inc1.udeinc1.udc#inc1.ude#inc1.ude#inc1.udc#inc1.udeVneIineuin.h#inc1.udcintmain(intargc.char*argv)Iinifd,numbytes;charbuf1100:charsendbu1120J=he1.1.o;structhostent*hc;structsock

    11、addr_inSerVer,rep1.y:if(argc!=2)Iprintf(Usagc:%sn.argv(0);cxit(1.);if(he=gcthostbynamc(argv(I)=NU1.1.)Iprintf(gcthosibyname()CnWn);cxit(1.):if(fk1.=sockct(AF-INET,SOCK_DGRAM,Oj)=-1)Printf(socket)exit(1.);bzero(serer.sizeof(server);scrvcr.sin-fami1.y=AF_1NET;server.sin_port=htons(3333);server.sin-add

    12、r=*(structin-addr*)he-h-a1.dr);Sendto(R(sen(1.buf),O.(strctSockaddr*)&scrvcr,sizeof(structsockaddr);whi1.e(I);Ien=sizcof(structsockaddr_in);if(nunbytes=recvfrom(M,bu,1.(X),O,(structsockaddr*)&rcp1.y,&)=-1)(error(recvfrom);cxit(1.):/checkifserverisrightif(Ien!=sizeof(structsockaddr)IIn1.enICmP(ConNvo

    13、id*)feserver,(constvoid*)rcp1.y,)!=O)(printf(Rcccivcmessagefromotherscrvcr.n);continue:/printfmessagefromSCrVCrbufnumby1.cs=O;printf(ServerMessage:%sn,buf);rintf(input:);fgcts(scndbuf.sizeof(sendbuf).stdin);SendbUf1.StrIen(Sendbuf)-IJ=0;scndto(fd,scndbu,StHCn(SCndb1.If),0,(S1.rUCtSOCkaddr*)scrvcr,si

    14、zcof(structsockaddr);If(Strcmp(Sendbufrquitn)=O)break;c1.ose(d);returnO:I3.原始套接1.1.基本应用套接口服务器代码/inc1.ude#inc1.udc#inc1.ude/inc1.ude#inc1.udc#inc1.udeVneIineUin.h/inc1.ude#1.efinePORT1234McfincBACK1.OG5defineMAXDATASIZEI(X)Ovoidproccss-c1.i(in1.connfd.structSoCkUddJinc1.ient);nain()iniIistcnfd,Connfk

    15、1;pid_tpid;S1.ructsockaddjinserver;structsockaddr_inc1.ient;int1.en;if(Iistcnk1.=socke1.(AF_INET,SOCK.STREAM,0)=-1)error(socket);cxi1.(1.);intopt=SO.REUSEADDR;sctsockopt(1.istcnfd.SO1._SOCKET.SO_REUSEADDR.&opt.sizcof(opt);bzcro(scrcr.sizcof(scrvcr);scrvcr.sin_fanii1.y=AF_INET:server.sin-port=htons(P

    16、ORT);scrvcr.sin_addr.s_addr=hton1.(INADDR-ANY);if(bind(1.istenfd,(structsockaddr*)&server,sizeo(server)=-)perror(bind);cxi1.(1.);if(1.isICn(IiStCnkkBACK1.OG)=-)IPcrror(1.isten);cxit(1.);Icn=Sizcoftc1.icnt);whi1.e(1.)(if(connfd=acccpi(IistcnfdXstructsockaddr*)&c1.icnt.&)=-1)(pcrror(accept);exit(1.);J

    17、if(pid=fork()X)(c1.ose(connfd);continue:e1.seif(pid=O)C1.ose(Iistenfd);PnKCsS_c1.i(Connfd,c1.ient);exit(O);e1.se(pcrror(fork);cxit(O);C1.ose(Iistenfd);voidexchange(char*src,intnum)charc;inti;srcnun-1.=();num=num-1.;rintf(%dn.num);for(i=0;inum;i+)c=srcij;srci=srcnum-1.;srcnun-1.=c;num=num-1.;if(nun=i

    18、)break;voidprocess-c1.i(intconnfd.structsockaddr-inc1.ient)(intnum;charexitf1.ag=();charrvb11MAXDATASIZE,scndbu11MAXDATASIZEJ.C1.1.namc1.MAXDATASIZEI;printf(gotaconnectionfrom%s.n,inet_ntoa(c1.ieni.sin_addr);num=rccv(connfd.c1.i-namc.MAXDATASIZEtO);if(num-I)(c1.osc(connfd);error(recv);reiurn;c1.i-na

    19、me(num-I=,0;printf(%sc1.ientsnameis%s.n,inei_nioa(c1.ient.sin_addr),c1.i_name);whi1.e(num=rccv(connfd.rccvbuf.MAXDATASIZE.O)Irccvbu11num=0;printf(%s:%s.c1.i_namc.rccvbuf);if(strcmp(recvbu,bye)=()CxitfIag=I;exchange(recvbuf.num):send(connfd,recvbuf,nun.O):if(cxitf1.ag=1.)break:c1.osc(connfd);printf(c

    20、1.ient%sfrom%send.n,c1.i_naine,inet_ntoa(c1.ient.sin_addr);套接口客户端代码/inc1.ude#inc1.udc#inc1.ude/inc1.ude#inc1.udc#inc1.udeVne1.ineUin.h#inc1.udc#inc1.ude#inc1.udcPORT1234MencMaxdatasizeio()voidPrOCeSS(FI1.E*fp.intsockfd);char*getMessage(char*send1.ine.ini1.en,FI1.E*fp);intmain(intargc,char*argv()(int

    21、sockfd;structhostent*he;structSOCkUdd1.Unserver;if(argc!=2)printf(Usagc:%sn.argvOJ);exit(1.);if(he=gcthostbynamc(argv1)=NU1.1.)(printf(wgcihostbynanc()CnWn);exit(1.);if(sockfd=sockct(AF.INET.SOCK.STREAM.0)=-1)PCrror(socket);cxit(1.);bzcro(&scncr,sizcof(server);server.sin-fani1.y=XHJNET;scrvcr.sin-po

    22、r1.=htons(PORT);server.sin_addr=*(structin-addr*)hc-h-addr);if(connect(sockfd,(strucisockaddr*)server,sizeof(sener)=-1)PCrrOr(connect);exit(1.);proccss(stdin.sockfd);c1.ose(sockfd);voidwritcfi1.c(in1.R1.char*sir)tinejt1.;structtmt2;charwtext1(X);11=Iimc(NU1.1.);t2=1.oca1.tinw(&t1.):sprintf(wtext,%d-

    23、d-%d-%d:%d:%d,t2-tin_year+1.9(X),i2-im_mon+1.,t2-tinsprintf(wtext,%s%sn.wtext.str):wrie(Id5Wtext1Sir1.en(Wtexi);Ivoidproccss(FI1.E*1.p,inisockId)(charsend1.ineMAXDATASIZE,recv1.ineMAXDATASIZE;intnum;intfd:time(1;structtm*t2;charCnaIne1.30;chartmp100;PrintfCConncctcdtoserver,n);printf(Inputc1.ientsn

    24、ame:);if(fgets(cname,30,f)=NU1.1.)printf(nExit.n);return;Send(JiOCkft1,cnane,S1.rien(Cname),0);cnamc(cna11w)-1.=0;fd=pen(cname.O_WRON1.Y|O_CREAT|O_APPEND.0M4);if(fd=-1.)perror(oen);writcfi1.e(fd.conncctionsuccess);whi1.e(getMessage(send1.ine,MAXDATASI7E,fp)!=NU1.1.)(send(sockfd.send1.ine.SIrIen(Send

    25、1.ine).0):send1.inestr1.en(send1.ine-1=0;sprintf(tnp.%s:%amc.scnd1.inc);Writefne(fd,mp);if(num=rccv(sockRI,rccv1.inc.MAXDATASIZEtO)=0)printf(Serverte11ninated.n);return;rccv1.incnum1.=O;printf(ServerMessage:%sn.rccv1.ine);sprintf(tmp,server:%s”(TeCVHne);WritefnC(RUmp);if(sircmp(scnd1.inc,byc)=O)brea

    26、k;printf(nExit.n);WritefiIEfdJcIoseconnection);char*getMessage(char*send1.ine.int1.en,FI1.E(1fp)rintf(1.nputstringtoserver:);reiurn(ets(se1.1.ine,MAXDATASIZE,1.);四、实验过程(1)运行tcp服务潜段程序和客户端程序,显示过程两)rootChereUMtefr咏en三WSjS(2)运行UdP服务器段程序和客户端程序,显示过程截图刘志敏kCroocchenxIs.hiyanJrootceraciroocchenxijQBSB戴仁涵应用四序

    27、信窗*q/12H2C日期三17:22root专qIffroct悯WIE1.局MJMaS1.*(T)WWiHIrootcheniao1.ei#CdShiyanTootechenxiao1.eiShiyanW.Znetudpc1.ient192.168.245.128ServerMessage:he1.1.oinput:namedaiwenhanServerMessage:namedaiwenhaninput:IIroOt);FIraXeChenXs1.yan)rootcenxnrootchenx)0应用W序亶J1.atQ.4i2H2a1.三”:22root6d营root!SUiEiV8M40*S

    28、T)KMHrootcheniao1.ei#CdShiyanrootcheniao1.eiShiyanw.ZnetudpserverYougotamessage(he1.1.o)from192.168.245.128Yougotamessage(namedaiwenhan)from192.168.245.128.,(rt)IIroOtgCI1.nx“Ismyan.rootce11xi-root。”:,a(3)原始套接口基本应用刘志敏rootgcefWtoOIdZT1(rootceWa*i工iroot0chenok.。应用W序信置*t釉二Z12月/日,三17:4groot*o45rootQCben

    29、xidO1.ei:-.hiyn12YfF*Y管文件F)MUiEiV8ttR0眸9DK(Hrootchenxiao1.ei1.cdshiyaniCootQchenxiao1.eishiyan#cd12rootecheniao1.ei12#c1.earirootQChenXiaoIei12#./servergotaconnectionfrom192.168.245.128.192.168.245.128c1.ientsnameis1.iu.1.iu:1.iu3IiiEUi1.51.iu:zhi51.iu:min(M(rocenaoe-Jrooti3chenxMoeis(Bw魁丈涵aIrootgcf

    30、tenx1.aoiet、J.rootchenxooier-Igf1.五、实险体会TCP的服务器程序结构:1 .创建,个SOCket,用函数SOCkCto2 .绑定IP地址、端口信息到SoCke1.上,用函数bind。3 .设良允许的最大连接数,用函数IiSten()4 .接受客户端的连接,用函数accept。5 .收发数据,用Send0、recv()或者read。、write()6 .关闭网络连接TCP的客户嫡程序结构,1 .创建一个SoCket,用函数socket02 .设置要连接的服务的IP地址和端口属性3 .连接服务器,用函数connet()4 .收发数据,用Send0、recv()或者

    31、read。、writc()5 .关闭网络连接UDP的服务器程序结构:1 .创建一个SOCket,用函数SocketO2 .绑定IP地址、端口信息到s。Cke1.上,用函数bind。3 .循环接受数据,用函数recvfOnno4 .关闭网络连接UDP的客户端程序结构I1 .创建一个SoCket,用函数socket02 .设置要连接的服务器的IP地址和端口属性3 .发送数据,用函数Sen1.oo4 .关闭网络连接Iinux网络编程是通过SOCket(套接字)接口实现,SOCket是种文件描述符,socket起源FUNIX,在.Unix一切皆文件哲学的思想下,socket是一种打开一读/写一关闭”模式的实现,服务器和客户端各自维护一个文件”,在建立连接打开后,可以向自己文件写入内容供对方读取或拧读取对方内容,通讯结束时关闭文件。指导教师评语:


    注意事项

    本文(实验十一网络编程.docx)为本站会员(田海滨)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!




    宁ICP备18001539号-1

    三一文库
    收起
    展开