欢迎来到天天文库
浏览记录
ID:49408485
大小:167.50 KB
页数:21页
时间:2020-03-01
《TCPIP协议分析实验.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验1TCP套接字编程一-©ch。客户与服务器【实验目的】掌握TCP套接字编程的客户程序与服务器程序的基本编写步骤,熟悉各种基本的套接字函数的使用。理解套接字在客户程序与服务器程序间的作用及其工作原理。【实验内容】编写一个TCP套接字客户程序,该程序能够完成向echo服务器程序发送一个字符串,并可以从echo服务器程序那里获取返回的字符串,并打印到屏幕;编写一个TCP套接字echo服务器程序,该程序运行后,一直等待客户程序的连接请求,在接受客户程序的连接后,打印出客户程序的连接套接字的工P地址及
2、端口号。然后,接收客户程序发来的字符串数据,并将该字符串数据发回给客户程序。【实验要求】本实验要求的实验内容,必须在实验课前自主完成,在每次对应实验课开始之前相应的实验项目内容必须己经基本完成,实验课上主要对实验过程中的问题进行解答和讨论。实验报告采用学校印制的《实验报告》本的方式提交,实验报告内容需要手写,涉及到代码部分或截图请将相关代码打印后贴于实验报告中。注意:1、打印时,以整齐看的清为准则调整字体和图片大小,不要过大;2、不要随意乱贴,要按照打印内容贴至对应实验报告对应文字处。【关键代码
3、】〃客户端代码EchoCIient.c:#include#include#include#incIude#incIude#include#incIudeVarpa/inet.h>#defineSIZE1024intmain(intargc,char**argv){if(argc!=3){printf("Parameter4、ber>");exit(1);}char*servlP=argv[1];//IPAddressin_port_tservPort=atoi(argv[2]);//PortNumberintsock;sock=socket(AF_INET,SOCK_STREAM,IPPROTO.TCP);〃创建socketif(sock<0)perror(flsocket()failed!M);〃创建失败exit(1);structsockaddrinservaddress;memset(&servaddre5、ss,0ysizeof(servaddress));servaddress.sin_family=AF_INET;servaddress.sin_port=htons(servPort);servaddress.sin_addr.s_addr=inet_addr(servlP);if(connect(sock,(structsockaddr*)&servaddress,sizeof(servaddress))<0){perror(Mconnect()failed!");〃连接失败exit(1);6、}structsockaddrinremaddress;socklen_trem_addrlen=sizeof(rem_address);getpeername(sock,(structsockaddr*)&rrnn_addr8ss,&rbm_addr2n);charprintable_addr[INET_ADDRSTRLEN];if(inet_ntop(AF_INETt&remLaddress.sin_addr.s_addrfprintable_addrfsizeof(printable_ad7、dr))!=NULL){printf(MHandlingClient:%s:%dntprintable_addr9ntohs(rem_address.sin_port));char*echostring="Hello!Howareyou?”;ssize_tsendBytes;ssize_trecvBytes;sendBytes=send(sock,echostring.strIen(echostring).0);if(sendBytes<0){perror(Msend()failed!N);8、exit(1);}charbuffer[SIZE]={, ,};recvBytes=recv(sock9buffer,SIZE,0);if(recvBytes<0)perror(f,recv()failed!");fputs(wReceived:nfstdout);fputs(buffer,stdout);fputc(l,,stdout);return0;}//服务器端代码EchoServer.c#incIude#include#incIude
4、ber>");exit(1);}char*servlP=argv[1];//IPAddressin_port_tservPort=atoi(argv[2]);//PortNumberintsock;sock=socket(AF_INET,SOCK_STREAM,IPPROTO.TCP);〃创建socketif(sock<0)perror(flsocket()failed!M);〃创建失败exit(1);structsockaddrinservaddress;memset(&servaddre
5、ss,0ysizeof(servaddress));servaddress.sin_family=AF_INET;servaddress.sin_port=htons(servPort);servaddress.sin_addr.s_addr=inet_addr(servlP);if(connect(sock,(structsockaddr*)&servaddress,sizeof(servaddress))<0){perror(Mconnect()failed!");〃连接失败exit(1);
6、}structsockaddrinremaddress;socklen_trem_addrlen=sizeof(rem_address);getpeername(sock,(structsockaddr*)&rrnn_addr8ss,&rbm_addr2n);charprintable_addr[INET_ADDRSTRLEN];if(inet_ntop(AF_INETt&remLaddress.sin_addr.s_addrfprintable_addrfsizeof(printable_ad
7、dr))!=NULL){printf(MHandlingClient:%s:%dntprintable_addr9ntohs(rem_address.sin_port));char*echostring="Hello!Howareyou?”;ssize_tsendBytes;ssize_trecvBytes;sendBytes=send(sock,echostring.strIen(echostring).0);if(sendBytes<0){perror(Msend()failed!N);
8、exit(1);}charbuffer[SIZE]={, ,};recvBytes=recv(sock9buffer,SIZE,0);if(recvBytes<0)perror(f,recv()failed!");fputs(wReceived:nfstdout);fputs(buffer,stdout);fputc(l,,stdout);return0;}//服务器端代码EchoServer.c#incIude#include#incIude
此文档下载收益归作者所有