![TCPIP实验报告_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-4/6/4a4d8449-6e14-40b2-86b1-7ee8a45c0a0b/4a4d8449-6e14-40b2-86b1-7ee8a45c0a0b1.gif)
![TCPIP实验报告_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-4/6/4a4d8449-6e14-40b2-86b1-7ee8a45c0a0b/4a4d8449-6e14-40b2-86b1-7ee8a45c0a0b2.gif)
![TCPIP实验报告_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-4/6/4a4d8449-6e14-40b2-86b1-7ee8a45c0a0b/4a4d8449-6e14-40b2-86b1-7ee8a45c0a0b3.gif)
![TCPIP实验报告_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-4/6/4a4d8449-6e14-40b2-86b1-7ee8a45c0a0b/4a4d8449-6e14-40b2-86b1-7ee8a45c0a0b4.gif)
![TCPIP实验报告_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-4/6/4a4d8449-6e14-40b2-86b1-7ee8a45c0a0b/4a4d8449-6e14-40b2-86b1-7ee8a45c0a0b5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、TCP/IP技术实验报告书专业:通信工程学生XX:X世超完成时间:11:28AM实验一网络应用程序基础实验目的:通过实验,使学生熟悉并掌握运用TCP/IP技术进行网络编程的基本知识,加深对课堂教学内容的理解,掌握套接字网络通信编程技术,能够运用VC+为开发工具编程解决网络通信中的实际问题,进行一些简单的网络应用程序设计。实验内容:1,Winsock的启动与终止。2,Winsock的创建及绑定和关闭。3,建立通信连接listen及accept和connect4,数据的传输。5,简单的客户机/服务器之间的通信。要求:通过在SDK模式下完成数据通信的过程,掌握WindowsSocket的常用函数的形
2、式和使用方法,理解数据通信的过程。实验步骤:1,打开VC环境1,使用向导为客户端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其他的选择默认设置2,在文件中添加代码3,编译调试4,使用向导为服务器端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其他的选择默认设置5,在文件中添加代码6,编译调试7,分别打开两个系统命令窗口中,并分别在其中运行客户端和服务器端程序。8,在客户端侧输入字符,可以看到服务器收到字符串参考代码:课本156页-160页实验结果:Client:#include<Winsock2.h>#include<stdio.h>/服务器端
3、口号为5050#defineDEFAULT_PORT5050#defineDATA_BUFFER1024voidmain(intargc,char*argv)WSADATAwsaData;SOCKETsClient;intiPort=DEFAULT_PORT;/从服务器端接收的数据长度intiLen;/接收数据的缓冲charbufDATA_BUFFER;/服务器端地址structsockaddr_inser;/判断输入的参数是否正确if(argc<2)/提示在命令行中输入服务器IP地址printf("Usage:clientserverIPaddressn");ret
4、urn;/接收数据的缓冲区初始化memset(buf,0,sizeof(buf);if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)printf("FailedtoloadWinsock.n");return;/填写要连接的服务器地址信息ser.sin_family=AF_INET;ser.sin_port=htons(iPort);/inet_addr()函数将命令行的点分IP地址转换为用二进制表示的网络字节顺序的IP地址ser.sin_addr.s_addr=inet_addr(argv1);/建立客户端流式套接口sClient=
5、socket(AF_INET,SOCK_STREAM,0);if(sClient=INVALID_SOCKET)printf("socket()Failed:%dn",WSAGetLastError();return;/请求与服务器端建立TCP连接if(connect(sClient,(structsockaddr*)&ser,sizeof(ser)=INVALID_SOCKET)printf("connect()Failed:%dn",WSAGetLastError();return;else/从服务器端接收数据iLen=recv(sClien
6、t,buf,sizeof(buf),0);if(iLen=0)return;elseif(iLen=SOCKET_ERROR)printf("recv()Failed:%d",WSAGetLastError();return;printf("recv()datafromserver:%sn",buf);closesocket(sClient);WSACleanup();Server:#include<Winsock2.h>#include<stdio.h>#include<stdlib.h>#pragmament(li
7、b,"ws2_32.lib")/服务器使用的端口号为5050#defineDEFAULT_PORT5050voidmain()intiPort=DEFAULT_PORT;WSADATAwsaData;SOCKETsListen,sAccept;/客户端地址长度intiLen;/发送的数据长度intiSend;/要发送给客户端的信息charbuf="Iamaserver."/服务器和客户端的IP地址structsockaddr_inser,cli;printf("n");printf("Serverwaitingn"
8、);printf("n");if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)printf("FailedtoloadWinsock.n");return;/创建服务器端套接口sListen=socket(AF_INET,SOCK_STREAM,0);if(sListen=INVALID_SOCKET)printf("socket()Failed:%dn",WSAGetLastError();return;/以下建立服务器端地址ser.sin_family=AF_INET;/htons()函数把
9、一个双字节的主机直接顺序的数据转换为网络直接顺序的数ser.sin_port=htons(iPort);/htonl()函数把一个四字节的主机直接顺序的数据转换为网络直接顺序的数/使用系统制定的IP地址INADDR_ANYser.sin_addr.s_addr=htonl(INADDR_ANY);if(bind(sListen,(LPSOCKADDR)&ser,sizeof(ser)=SOCKET_ERROR)printf("bind()Failed:%dn",WSAGetLastError();return;/进入监听状态if(listen(sListen,5)=
10、SOCKET_ERROR)printf("listen()Failed:%dn",WSAGetLastError();return;/初始化客户端地址长度参数iLen=sizeof(cli);/进入一个无限循环,等待客户的连接请求while(1)sAccept=accept(sListen,(structsockaddr*)&cli,&iLen);if(sAccept=INVALID_SOCKET)printf("accept()Failed:%dn",WSAGetLastError();break;/输出客户IP地址和端口号printf
11、("AcceptedclientIP:%s,port:%dn",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port);/给建立连接的客户发送信息iSend=send(sAccept,buf,sizeof(buf),0);if(iSend=SOCKET_ERROR)printf("send()Failed:%dn",WSAGetLastError();break;elseif(iSend=0)break;elseprintf("send()byte:%dn",iSend);n");printf
12、("closesocket(sAccept);closesocket(sListen);WSACleanup();实验截图:实验二基于TCP协议的客户/服务器通信程序实验目的:通过实验,使学生熟悉并掌握运用TCP/IP技术进行网络编程的基本知识,加深对课堂教学内容的理解,掌握套接字网络通信编程技术,能够运用VC+为开发工具编程解决网络通信中的实际问题,进行一些简单的网络应用程序设计。实验内容:1,主机间TCP的性能测试之一:回程时延。2,服务器端能从客户端接收数据并立即将接收到的数据原样返回给客户方。3,客户端能往服务器端发送数据,然后立即接受从服务器端原样返回的数据。理解TCP通信
13、程序设计过程,并结合特定应用场景(如创建留言板程序、创建多客户端服务器/客户通信程序等)完成程序开发。掌握TCP服务器程序和客户程序的创建过程,熟悉单播通信程序中用到的Winsock接口,培养学生将所学知识进行灵活运用的能力。实验步骤:1,打开VC环境2,使用向导为客户端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其他的选择默认设置3,在文件中添加代码4,编译调试5,使用向导为服务器端创建工程:选择可执行程序,选择使用wsa环境,单文档环境,其他的选择默认设置6,在文件中添加代码7,编译调试8,分别打开两个系统命令窗口中,并分别在其中运行客户端和服务器端程序。9,在客户端着输入字
14、符,可以看到服务器收到字符串注:可以再实验一的代码上修改,自己增加额外的功能,比如取系统时间,计算往返时间等作完之后,修改通信代码使用UDP来实现网络通信实验结果:Client:#include<Winsock2.h>#include<stdio.h>#include<stdlib.h>#defineDEFAULT_PORT5050#defineDATA_BUFFER1024#pragmament(lib,"WS2_32.lib")voidmain(intargc,char*argv)WSADATAwsaData;SOCKETsClien
15、t;intiPort=5050;intiLen;intisend,iRecv;charsend_buf="Hello!Iamaclient"charrecv_bufDATA_BUFFER;structsockaddr_inser;if(argc<2)printf("输入服务器的IP地址:n");return;elsememset(recv_buf,0,sizeof(recv_buf);if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)printf("Winsock环境初始化失败:n");r
16、eturn;sClient=socket(AF_INET,SOCK_DGRAM,0);if(sClient=INVALID_SOCKET)printf("socket()函数调用失败:dn",WSAGetLastError();return;ser.sin_family=AF_INET;ser.sin_port=htons(iPort);ser.sin_addr.s_addr=inet_addr(argv1);iLen=sizeof(ser);isend=sendto(sClient,send_buf,sizeof(send_buf),0,(structsockaddr*)
17、&ser,iLen);if(isend=SOCKET_ERROR)printf("sendto()函数调用失败:dn",WSAGetLastError();return;elseif(isend=0)return;elseprintf("sendto()调用成功:n");iRecv=recvfrom(sClient,recv_buf,sizeof(recv_buf),0,(structsockaddr*)&ser,&iLen);if(iRecv=SOCKET_ERROR)printf("recvfrom()函数调用失败:
18、%dn",WSAGetLastError();return;elseif(iRecv=0)return;elseprintf("sendto():%sn",recv_buf);printf("n");closesocket(sClient);WSACleanup();Server:#include<Winsock2.h>#include<stdio.h>#include<stdlib.h>#defineDEFAULT_PORT5050#defineBUFFER_LENGTH1024#pragmament(li
19、b,"WS2_32.lib")voidmain()intiPort=DEFAULT_PORT;WSADATAwsaData;SOCKETsSocket;intiLen,iRecv,iSend;structsockaddr_inser,cli;charsend_buf="Hollo!Iamaserver"charrecv_bufBUFFER_LENGTH;printf("");printf("Serverwaiting");printf("");if(WSAStartup(MAKEWORD(2,2
20、),&wsaData)!=0)printf("环境初始化错误:n");return;sSocket=socket(AF_INET,SOCK_DGRAM,0);if(sSocket=INVALID_SOCKET)printf("socket()函数调用失败:n",WSAGetLastError();return;ser.sin_family=AF_INET;ser.sin_port=htons(iPort);ser.sin_addr.s_addr=htonl(INADDR_ANY);if(bind(sSocket,(LPSOCKADDR)&
21、ser,sizeof(ser)=SOCKET_ERROR)printf("bind()函数调用失败:n",WSAGetLastError();return;iLen=sizeof(cli);memset(recv_buf,0,sizeof(recv_buf);while(1)iRecv=recvfrom(sSocket,recv_buf,BUFFER_LENGTH,0,(SOCKADDR*)&cli,&iLen);if(iRecv=SOCKET_ERROR)printf("recvfrom()函数调用失败:n",WSAGetLastErr
22、or();break;elseif(iRecv=0)break;elseprintf("recvfrom():%dn",recv_buf);printf("客户端的IP地址、端口号:%dn",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port);iSend=sendto(sSocket,send_buf,sizeof(send_buf),0,(SOCKADDR*)&cli,sizeof(cli);if(iSend=SOCKET_ERROR)printf("sendto()函数调用失败:n",W
23、SAGetLastError();break;elseif(iSend=0)break;elseprintf("sendto()调用成功!n");closesocket(sSocket);WSACleanup();实验截图:SB百E星斤>C":Wndowt32',>cmd»+-nicpocoFtUindoua1然'车版权所TrMirriJKuf4CDTpaHtinn«.:旱田所有权利.C"71元月产株3/11in4靠上r"小七tirE/缶"下;载卜取金二51iRntudisxDiithJ
24、iigiSr;inntmdp.t?K«:195?.16H186.1调用成功ciendtoC-HoHotIanaEei*Uel*ES苣锂0:CAWirjjjowsggj色旦3tt*nde、e_-E:&雷下曳实验二se(verudp史地典盟£HierosoftMIndues1版本6.1,76013版权所有S)2009PicvvQvftCovporationft保留所有权利."一"-fv事i*YKi1七in挈客户端的U地址:端口号:71日丽?serdto<?:调用成功!实验三简易聊天系统的实现实验目的:通过实验,使学生熟悉并掌握运用TCP/IP技
25、术进行网络编程的基本知识,加深对课堂教学内容的理解,掌握套接字网络通信编程技术,能够运用VC+为开发工具编程解决网络通信中的实际问题,进行一些简单的网络应用程序设计。实验内容:设计实现包括客户端和服务器端的简单聊天系统。通过编写简单的聊天程序,理解MFC的Socket类同SocketAPI之间的区别以及MFC的两种类之间的联系与区别。实验步骤:1,打开VC环境2,使用向导为客户端创建工程:选择FMC可执行程序,选择使用wsa环境,选择单文档环境,其他的选择默认设置3,为对话窗添加控件:右击工具栏选择控件,拖拽某个控件到对话框4,为控件添加变量:使用类向导,选择要操作的对话窗类,选择变量Tab,
26、点击添加变量按钮,为变量命名并选择变量类型。5,为控件添加代码:右击控件添加事件,如点击,双击,右击。为事件添加代码,根据教科书添加代码6,添加新的对话窗:单机rousourceTab,在对话窗出右击,选择添加对话窗,7,为对话窗添加类:右键点击新对话窗,选择添加类,出现向导,为类命名并选择父类8,为心对话窗添加控件和变量9,为新对话窗添加代码10,编译调试参考代码:课本224页-229页实验结果:CsockClient:#include"stdafx.h"#include"CSockClient.h"#include"CSockClientD
27、lg.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE=_FILE_;#endif/CCSockClientAppBEGIN_MESSAGE_MAP(CCSockClientApp,CWinApp)/AFX_MSG_MAP(CCSockClientApp)/NOTE-theClassWizardwilladdandremovemappingmacroshere./DONOTEDITwhatyouseeintheseblocksofgeneratedcode!/AFX_MSGON_MAND(ID_HE
28、LP,CWinApp:OnHelp)END_MESSAGE_MAP()/CCSockClientAppconstructionCCSockClientApp:CCSockClientApp()/TODO:addconstructioncodehere,/PlaceallsignificantinitializationinInitInstance/TheoneandonlyCCSockClientAppobjectCCSockClientApptheApp;/CCSockClientAppinitializationBOOLCCSockClientApp:InitInstance()if(!A
29、fxSocketInit()AfxMessageBox(IDP_SOCKETS_INIT_FAILED);returnFALSE;AfxEnableControlContainer();/Standardinitialization/Ifyouarenotusingthesefeaturesandwishtoreducethesize/ofyourfinalexecutable,youshouldremovefromthefollowing/thespecificinitializationroutinesyoudonotneed.#ifdefAFXDLLEnable3dControls();
30、#else/CallthiswhenusingMFCinasharedDLLEnable3dControlsStatic();/CallthiswhenlinkingtoMFCstatically#endifCCSockClientDlgdlg;m_pMainWnd=&dlg;intnResponse=dlg.DoModal();if(nResponse=IDOK)/TODO:Placecodeheretohandlewhenthedialogis/dismissedwithOKelseif(nResponse=IDCANCEL)/TODO:Placecodeheretohandlew
31、henthedialogis/dismissedwithCancel/Sincethedialoghasbeenclosed,returnFALSEsothatweexitthe/application,ratherthanstarttheapplication'smessagepump.returnFALSE;CsockServer:#include"stdafx.h"#include"CsockServer.h"#include"CsockServerDlg.h"#ifdef_DEBUG#definenewDEBUG_NE
32、W#undefTHIS_FILEstaticcharTHIS_FILE=_FILE_;#endif/CCsockServerAppBEGIN_MESSAGE_MAP(CCsockServerApp,CWinApp)/AFX_MSG_MAP(CCsockServerApp)/NOTE-theClassWizardwilladdandremovemappingmacroshere./DONOTEDITwhatyouseeintheseblocksofgeneratedcode!/AFX_MSGON_MAND(ID_HELP,CWinApp:OnHelp)END_MESSAGE_MAP()/CCso
33、ckServerAppconstructionCCsockServerApp:CCsockServerApp()/TODO:addconstructioncodehere,/PlaceallsignificantinitializationinInitInstance/TheoneandonlyCCsockServerAppobjectCCsockServerApptheApp;/CCsockServerAppinitializationBOOLCCsockServerApp:InitInstance()if(!AfxSocketInit()AfxMessageBox(IDP_SOCKETS_
34、INIT_FAILED);returnFALSE;AfxEnableControlContainer();/Standardinitialization/Ifyouarenotusingthesefeaturesandwishtoreducethesize/ofyourfinalexecutable,youshouldremovefromthefollowing/thespecificinitializationroutinesyoudonotneed.#ifdef_AFXDLLEnable3dControls();/CallthiswhenusingMFCinasharedDLL#elseE
35、nable3dControlsStatic();/CallthiswhenlinkingtoMFCstatically#endifCCsockServerDlgdlg;m_pMainWnd=&dlg;intnResponse=dlg.DoModal();if(nResponse=IDOK)/TODO:Placecodeheretohandlewhenthedialogis/dismissedwithOKelseif(nResponse=IDCANCEL)/TODO:Placecodeheretohandlewhenthedialogis/dismissedwithCancel/Sinc
36、ethedialoghasbeenclosed,returnFALSEsothatweexitthe/application,ratherthanstarttheapplication'smessagepump.returnFALSE;实验截图:实验四WinInet实现FTP客户端实验目的:通过实验,使学生熟悉并掌握运用TCP/IP技术进行网络编程的基本知识,加深对课堂教学内容的理解,掌握套接字网络通信编程技术,能够运用VC+为开发工具编程解决网络通信中的实际问题,进行一些简单的网络应用程序设计。实验内容:1,写出完整的软件需求说明书。2,开发FTP的客户端。3,完成在局域网内的测试,
37、并记录测试结果。本实验涵盖了C/S体系结构和Socket编程。通过本实验深入地了解FTP的工作原理以及服务器端和客户端的工作流程,学习Socket在网络编程中的各种应用,掌握WinInet的套接字编程。实验步骤:1,打开VC环境2,使用向导为客户端创建工程:选择MFC可执行程序,单文档环境,其他的选择默认设置3,为对话窗添加控件:右击工具栏选择控件,拖拽某个控件到对话框4,为控件添加变量:使用类向导,选择要操作的对话窗类,选择变量Tab,点击添加变量按钮,为变量命名并选择变量类型。5,为控件添加代码:右击控件添加事件,如点击,双击,右击。为事件添加代码,根据教科书添加代码6,编译调试实验结果:Scan:#include"stdafx.h"#include"scan.h"#include"scanDlg.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE=_FILE_;#endif/CScanAppBEGIN_MESSAGE_MAP(CScanApp,CWinApp)/AFX_MSG_MAP(CScanApp)/NOTE-theClassWi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗器械工程居间合同范本
- 施工电梯布置专项方案
- 食品安全风险评估与管理技术作业指导书
- 承包山林合同书
- 市场营销策略制定与实施作业指导书
- 停车场管理服务合同
- 住房和城乡建设委员会
- 林业经济管理与政策作业指导书
- 鸡舍租赁合同
- 技术服务合同格式
- 关于进行小区第一届业主委员会选举投票的公告
- 2023年山西国际能源集团有限公司招聘笔试题库及答案解析
- YC/T 295-2009卷烟制造过程能力测评导则
- 仁爱英语八年级阅读理解测试题和答案
- 山东省中考物理总复习 八上 第4讲 光现象
- DB11∕T 1875-2021 市政工程施工安全操作规程
- 心肺康复完整版本课件
- 传统节日春节英文介绍课件
- 质量奖现场评审问题集锦精编版
- 装配式结构技术课程教学大纲
- 水资源论证报告
评论
0/150
提交评论