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