东南大学计算机网络实验报告1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

东南大学自动化学院实验报告课程名称:信息通信网络概论第1次实验实验名称:TCP/IP协议与Socket编程认识实验院(系):自动化专业:自动化姓名:肖显东学号:08012112实验室:金智楼5楼5号机房实验组别:同组人员:实验时间:年月日评定成绩:审阅教师:目录1.实验目的和要求——————————————————12.实验原理—————————————————————13.实验方案和实验步骤————————————————14.实验设备和器材配置————————————————15.实验记录—————————————————————16.实验总结—————————————————————27.思考题和讨论题——————————————————28.附录代码onok1,2—————————————————4一.实验目的和要求目的:能够将输入的IP转换为URL,同时也能将URL转换为IP要求:理解掌握WSAStartup()、WSACleanup()函数的使用;知道WSADATA、HOSTENT结构成员表示意义和inet_ntoa()、inet_addr()函数的使用。二.实验原理原理:利用socket函数三.实验方案与实验步骤1.网络程序初始化,调用其它WinSock函数之前先使用WSAStartup()函数初始化2.通过WinSock发送和接收数据3.程序结束必须关闭Socket,使用WSACleanup()释放所分配的内部缓冲区和其他资源。四.实验设备与器材配置电脑+vc6.0五.实验记录在运行程序时因为电脑之前重装,导致了缺少很多组件,经过多方修复终于使程序能够完美运行。(MFCO42D.DLL,MFCN42D.DLL等)六.实验总结本次试验让我对socket有了初步的了解,学会了通过MFC将URL和IP进行转换的方法,加深了对MFC的理解,同时锻炼了MFC编程能力。七.思考题或讨论题1.WinInet有什么作用?WinInet(“WindowsInternet”)API帮助程序员使用三个常见的Internet协议,这三个协议是用于WorldWideWeb万维网的超文本传输协议(HTTP:HypertextTransferProtocol)、文件传输协议(FTP:FileTransferProtocol)和另一个称为Gopher的文件传输协议2.结合本次实验,谈谈使用MFCWinInet类有哪些优点?Win32Internet扩展提供了对普通Internet协议的访问,这些协议包括:HTTP、FTP和Gopher。Gopher已经渐渐淡出。借助于WinInet编程接口,开发人员不必去了解Winsock、TCP/IP和特定Internet协议的细节就可以编写出高水平的Internet客户端程序。WinInet为所有几种协议(HTTP、FTP和Gopher)提供了统一的函数集,也就是Win32API接口。利用这些统一的函数集,大大简化了针对HTTP、FTP等协议的编程,从而轻松地将Internet集成到自己的应用程序中。底层协议的转换(如从FTP到HTTP)只要对源代码稍作修改就可以完成。MFC对WinInet的封装是通过提供三个由CStdioFile派生类实现的。这三个派生类是:CInternetFile、CHttpFile和CGopherFile。对开发人员来说,不管你以前是否用过CStdioFile,WinInet都是很好理解并且易于使用的。它使得存取Internet数据易如反掌,使得Internet数据和本地数据的处理一致透明,数据的存储位置已经不再重要。八.附录代码voidCMyDlg::OnOk1(){//TODO:AddyourcontrolnotificationhandlercodehereWSADATAwsaData;LPHOSTENTlpHostEnt;//该结构包含主机的ip;if(WSAStartup(0X0101,&wsaData))//若初始化成功则返回0;相当于应用程序与dll//之间的连接初始化,然后才能使用winsockapi的函数MessageBox(Couldnotloadwindowssocketsdll.,NULL,MB_OK|MB_ICONSTOP);else{UpdateData(TRUE);//用于将屏幕上控件中的数据交换到变量中。//TODO:此处需要自己添加函数,由对话框中输入的主机名m_Url1得到对应的包含主机ip的结构变量lpHostEnt//例如:输入的是,得到包含对应IP为11000000001000000100000000000010的结构变量lpHostEnt=gethostbyname(m_Url1);if(!lpHostEnt)MessageBox(Couldnotgetipaddress.,NULL,MB_OK|MB_ICONSTOP);else{//TODO:此处需要自己添加函数,把lpHostEnt结构中成员变量h_addr_list包含的网络位顺序的IPv4地址转化为常见的点间隔格式IP以供显示//例如:输入的是11000000001000000100000000000010,得到192.32.64.2m_Ip1=inet_ntoa(*(LPIN_ADDR)*(lpHostEnt-h_addr_list));UpdateData(FALSE);//用于将数据在屏幕中对应控件中显示出来。}}WSACleanup();}voidCMyDlg::OnOk2(){//TODO:AddyourcontrolnotificationhandlercodehereWSADATAwsaData;LPHOSTENTlpHostEnt;DWORDdwIPAddr;if(WSAStartup(0x0101,&wsaData))MessageBox(Couldnotloadwindowssocketsdll.,NULL,MB_OK|MB_ICONSTOP);else{UpdateData(TRUE);//用于将屏幕上控件中的数据交换到变量中。//TODO:此处需要自己添加函数,由对话框中输入的点间隔格式的IP地址m_Ip2转化为一个以网络字节顺序表示的32位二进制IP地址dwIPAddr//例如,原来为192.32.64.2,转化后为11000000001000000100000000000010dwIPAddr=inet_addr(m_Ip2);if(dwIPAddr==INADDR_NONE)MessageBox(InvalidInternetAddress.,NULL,MB_OK|MB_ICONSTOP);else{//TODO:此处需要自己添加函数,把IP地址dwIPAddr转化为对应的包含网络名称的结构变量lpHostEnt//例如:输入的是11000000001000000100000000000010,得到=gethostbyaddr((charFAR*)&dwIPAddr,4,PF_INET);if(!lpHostEnt)MessageBox(Couldnotgethostname.,NULL,MB_OK|MB_ICONSTOP);else{//TODO:添加函数,从结构变量lpHostEnt中取得对应IP名称的成员变量h_name,并赋给m_Url2变量以供显示m_Url2=lpHostEnt-h_name;UpdateData(FALSE);//用于将数据在屏幕中对应控件中显示出来。}}}WSACleanup();}

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功