1 / 12
文档名称:

数据通信与网络优质课程设计实践报告解析IP数据包.docx

格式:docx   大小:180KB   页数:12页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据通信与网络优质课程设计实践报告解析IP数据包.docx

上传人:读书百遍 2022/7/27 文件大小:180 KB

下载得到文件列表

数据通信与网络优质课程设计实践报告解析IP数据包.docx

相关文档

文档介绍

文档介绍:HUBEI NORMAL UNIVERSITY
专业课程论文
Course’s Thesis
课程名称
数据通信与网络
作业题目
数据通信与网络课程设计报告
学生姓名
贺兵
学 号
7
指引教师
short HeadChecksum;
unsigned int SourceAddr;
unsigned int DestinAddr;
unsigned char Options;
}ip_head; //定义IP头部旳数据构造
void main(int argc,char *argv[])
{
using namespace std;
ofstream outfile("C:\\",ios::out);
if(argc!=2)
{
cout<<endl<<"请如下面格式输入命令行:PackParse packet_sum"<<endl;
return;
}
WSADATA WSAData;
if(WSAStartup(MAKEWORD(2,2), &WSAData)!=0)
{
cout<<endl<<"WSASTartup初始化失败"<<endl;
return;
}
SOCKET sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP); //三个参分别为通信发生旳区字段,套接字旳类型,与IP合同
if(sock==INVALID_SOCKET)
{
cout<<endl<<"创立Socket失败!"<<endl;
closesocket(sock);
WSACleanup();
}
BOOL flag=TRUE;
if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char *) &flag,sizeof(flag))==SOCKET_ERROR)
{
cout<<endl<<"setsockopt操作失败:"<<WSAGetLastError()<<endl;
closesocket(sock);
WSACleanup();
}
char hostName[128];//获取主机名
if(gethostname(hostName,100)==SOCKET_ERROR)
{
cout<<endl<<"gethostname操作失败:"<<WSAGetLastError()<<endl;
closesocket(sock);
WSACleanup();
}
hostent *pHostIP; //获取本地IP
if((pHostIP=gethostbyname(hostName))==NULL)
{
cout<<endl<<"gethostbyname操作失败:"<<WSAGetLastError()<<endl;
closesocket(sock);
WSACleanup();
}
sockaddr_in host_addr;//
=AF_INET;
=htons(6000);
=*(in_addr *)pHostIP->h_addr_list[0];
if(bind(sock,(PSOCKADDR)&host_addr,sizeof(host_addr))==SOCKET_ERROR)
{
cout<<endl<<"bind操作失败:"<<WSAGetLastError()<<endl;
closesocket(sock); //绑定网卡
WSACleanup();
}
DWORD dwBufferLen[10];
DWORD dwBufferInLen=1;
DWORD dwBytesReturned=0;
if(WSAIoctl(sock , IO_RCVALL ,&dwBufferInLen , sizeof(dwBufferInLen) , &dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL)==SOCKET_ERROR)
{
cout<<endl<<"WSAIoctl操作失败:"<<WSAGetLastError()<<endl;
closesocket(sock); //将网卡设为混杂模式,以接受所有数据
WSACleanup();
}
cout<<end