Windows sockets 获取 IPwireshark 使用.docx
- 文档编号:3265581
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:12
- 大小:474.95KB
Windows sockets 获取 IPwireshark 使用.docx
《Windows sockets 获取 IPwireshark 使用.docx》由会员分享,可在线阅读,更多相关《Windows sockets 获取 IPwireshark 使用.docx(12页珍藏版)》请在冰豆网上搜索。
Windowssockets获取IPwireshark使用
网络编程技术实验报告
实验名称
实验一网络编程基础训练
Zuozhe
Lenglei
实验日期
12/12/2014
实验报告要求:
1.实验目的2.实验要求3.实验环境4.实验作业5.问题及解决
6.思考问题7.实验体会
【实验目的】
掌握Wireshark的基本用法,掌握netstat的基本用法,能够使用这些工具对网络应用程序的传输过程进行捕获、观察和状态分析;了解WindowsSocketsAPI的基本函数功能,掌握WindowsSockets的编程环境配置,掌握网络程序设计的基本过程。
【实验要求】
1、下载安装Wireshark,熟悉捕获、查看、过滤、查找等基本方法,对用户飞秋文件传输、文字聊天等行为进行网络通信过程分析。
2、熟悉netstat命令,查看用户使用网络应用程序过程中对系统网络状态的改变。
3、使用WindowsSockets的API函数获得本机的IP地址。
4、使用WindowsSockets的API函数获得给定域名的IP地址。
【实验环境】
Wireshark
【实验作业】
1.安装wireshark:
2.捕获:
3.查看
4.过滤
>>在filter里输入protocol的类型,如tcp、ip、arp…………
>>这里我输入tcp,过滤后可以看到这样的:
5.飞秋通信分析:
飞秋通信过程:
1.当我在输入时,但还未发送,飞秋会自动向对方发送一个长度为111的包,只要我没发送这个信息,他机会一直发送这个包,估计这个包的作用是让对方确认我方准备给对方发数据,
2.当我方点击发送后,我方会先给对方发一个长度为116的包,这个应该是告知对方已经将数据包发过来了。
然后是一个长度为111的包,
紧接着,对方会回复我一个长度为374的包,估计这个包的作用是对方在向我说明自己已经准备好接收我发的包了。
然后就是我发的包的过程,
然后对方回复我,表示接受到数据:
具体流程如下图:
6.nestat的使用:
1)netstat命令如下:
根据命令行的命令的提示:
Netstat–a显示所有连接和可侦听的端口
netstat-b显示连接所涉及的程序:
从这里可以看到程序和连接间的关系。
二、windowsSockets的使用:
1.使用WindowsSockets的API函数获得本机的IP地址
关键函数:
gethostname()和gethostbyname(constchar*name);
代码:
/*
**copyright@lenglei
**
**WindowsSocketsAPI的基本调用步骤:
**1.调用WSAStartup(),实现WindowsSocketsDLL的初始化
**2.使用WindowsSocketsAPI中的函数
**3.调用WSACleanup(),注销程序,释放资源
*/
#include
#include
#include
#include
#pragmacomment(lib,"Ws2_32.lib")
usingnamespacestd;
intmain(){
WSADATAwsaData;
char*hostName;
structin_addraddr;
//初始化windowsSockets
//WSAStartup调用成功返回0
if(0!
=WSAStartup(MAKEWORD(2,2),&wsaData)){
cout<<"WSAStartupfaild!
"< return1; } //获取主机信息 charname[256]; hostent*remoteHost; gethostname(name,sizeof(name)); remoteHost=gethostbyname(name); if(remoteHost! =NULL){ inti=0; while(remoteHost->h_addr_list[i]! =0){ addr.s_addr=*(u_long*)remoteHost->h_addr_list[i++]; cout<<"IPAddress"< "< } } //释放 WSACleanup(); system("pause"); return0; } 2.使用WindowsSockets的API函数获得给定域名的IP地址 关键函数: gethostbyname(constchar*name); /* **copyright@lenglei ** **WindowsSocketsAPI的基本调用步骤: **1.调用WSAStartup(),实现WindowsSocketsDLL的初始化 **2.使用WindowsSocketsAPI中的函数 **3.调用WSACleanup(),注销程序,释放资源 */ #include #include #include #include #pragmacomment(lib,"Ws2_32.lib") usingnamespacestd; intmain(){ WSADATAwsaData; char*hostName; structin_addraddr; //初始化windowsSockets //WSAStartup调用成功返回0 if(0! =WSAStartup(MAKEWORD(2,2),&wsaData)){ cout<<"WSAStartupfaild! "< return1; } //获取主机信息 stringname; hostent*remoteHost; while(cin>>name){ remoteHost=gethostbyname(name.c_str()); if(remoteHost! =NULL){ inti=0; while(remoteHost->h_addr_list[i]! =0){ addr.s_addr=*(u_long*)remoteHost->h_addr_list[i++]; cout<<"IPAddress"< "< } } } //释放 WSACleanup(); system("pause"); return0; } 实验结果: 【实验中出现问题及解决方法】 问题就是实验教材感觉有点过时,我用vs2013编的,里面有的东西用不了,不过我在微软官方论坛上找到了解决方案。 【思考问题】 个人感觉还是用python写网络程序比较方便,windowsscokets感觉好麻烦,不过c语言嘛,很底层的东西,效率很高啦 【实验体会】 实验比较有意思,对网络编程有了浓厚的兴趣,下一步打算更加深入的学习 成绩 优 良 中 及格 不及格 教师签名: 日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows sockets 获取 IPwireshark 使用
![提示](https://static.bdocx.com/images/bang_tan.gif)