当前位置:首页 > 《网络编程与协议分析》课程设计报告
(6)系统构架
四、部分代码
1)初始化套接字
BOOL CTestDlg::SockInit() { WSADATA wsa; if(WSAStartup(MAKEWORD(2,2),&wsa)!=0) { AfxMessageBox(\ } m_sock=socket(AF_INET,SOCK_RAW,0); if(m_sock==INVALID_SOCKET) { AfxMessageBox(\ } SOCKADDR_IN addr; addr.sin_family=AF_INET; addr.sin_port=htons(5000); struct hostent FAR * pHostent; char FAR name[25]; gethostname(name, 25); pHostent = gethostbyname(name); memcpy(&addr.sin_addr.S_un.S_addr,pHostent->h_addr_list[0],pHostent->h_len); if(bind(m_sock,(SOCKADDR *)&addr,sizeof(addr))!=0) { AfxMessageBox(\ } DWORD dwBytesRet; unsigned int optval = 1; int pCount=0;
if(INVALID_SOCKET==(WSAIoctl(m_sock,SIO_RCVALL,&optval,sizeof(optval),
NULL, 0, &dwBytesRet, NULL, NULL)))
{ AfxMessageBox(\ Fail!\ return false; }
}
return true;
2)初始化表格
BOOL CTestDlg::ListInit() { DWORD dwStyle = GetWindowLong(m_List.m_hWnd, GWL_STYLE); SetWindowLong(m_List.m_hWnd,GWL_STYLE,dwStyle|LVS_REPO); DWORD dwStyles = m_List.GetExStyle(); dwStyles &= ~LVS_EX_CHECKBOXES;
m_List.SetExtendedStyle(dwStyles|LVS_EX_FULLROWSELECT|LVXGRIDLINES); m_List.InsertColumn(1,\版本\ m_List.InsertColumn(2,\头部长度\ m_List.InsertColumn(3,\服务类型\ m_List.InsertColumn(4,\总长度\ m_List.InsertColumn(5,\标识符\ m_List.InsertColumn(6,\标志位\ m_List.InsertColumn(7,\片偏移\ m_List.InsertColumn(8,\生存周期\ m_List.InsertColumn(9,\协议\ m_List.InsertColumn(10,\首部校验和\ m_List.InsertColumn(11,\源地址\ m_List.InsertColumn(12,\目的IP地址\
}
return true;
3)ip,tcp,udp,icmp头部定义
struct iphead { unsigned char ip_EdiAndLen; unsigned char ip_Serve; unsigned short int ip_Len; unsigned short int ip_Sign; unsigned short int ip_MarkAndMove; unsigned char ip_Ttl; unsigned char ip_Protocol;
//版本&首部长度
//服务类型 //总长度 //标识 //标识&片偏移 //生存时间 //上层协议
共分享92篇相关文档