实验十一网络编程.docx
《实验十一网络编程.docx》由会员分享,可在线阅读,更多相关《实验十一网络编程.docx(23页珍藏版)》请在三一文库上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 十一 网络 编程
