📄 subject_56719.htm
字号:
<p>
序号:56719 发表者:〖王雷〗 发表日期:2003-10-20 12:22:28
<br>主题:截取IP包了!可是好像我的格式不对啊!所以总是出错!
<br>内容:这是我的全部源代码!<BR><BR>这是我封的IP,TCP包头<BR>typedef struct _IP <BR>{<BR><BR> BYTE Version;<BR> BYTE HdrLen;<BR><BR> BYTE ServiceType;<BR> WORD TotalLen;<BR> WORD ID;<BR><BR> WORD Flags;<BR> WORD FragOff;<BR><BR> BYTE TimeToLive;<BR> BYTE Protocol;<BR> WORD HdrChksum;<BR> DWORD SrcAddr;<BR> DWORD DstAddr;<BR> BYTE Options[0];<BR>} IP;<BR>//TCP头<BR>typedef struct _TCP<BR> {<BR> WORD SrcPort;<BR> WORD DstPort;<BR> DWORD SeqNum;<BR> DWORD AckNum;<BR> BYTE DataOff;<BR> BYTE Flags;<BR> WORD Window;<BR> WORD Chksum;<BR> WORD UrgPtr;<BR> } TCP;<BR>///////////////////////////<BR>typedef struct _PROTN2T{ //这是协议名<BR> int proto;<BR> char * pprototext;<BR>}PROTN2T;<BR>///////////////////////////////<BR>void CMySocket::CReate()<BR>{<BR> char localName[256];<BR> CString cst;<BR><BR> dwValue=0;<BR> m_sock=socket(AF_INET,SOCK_RAW,IPPROTO_RAW);<BR> <BR> setsockopt(m_sock,SOL_SOCKET,SO_RCVTIMEO,(const char *) &rcvtimeo,sizeof(rcvtimeo));<BR> gethostname(localName,sizeof(localName)-1);<BR> HOSTENT * host=gethostbyname(localName);<BR> memcpy(&(m_addr.sin_addr),(const void *)host->h_addr_list [0],host- >h_length );<BR><BR> m_addr.sin_family =host->h_addrtype ;<BR> m_addr.sin_port =htons(7070);<BR> <BR> int n=bind(m_sock,(PSOCKADDR)&m_addr,sizeof(m_addr));<BR> <BR> if(n!=SOCKET_ERROR) <BR> {<BR> dwValue=1;<BR> ioctlsocket(m_sock,SIO_RCVALL,&dwValue);<BR> sock1=m_sock;<BR> AfxBeginThread(BeginThread,(LPVOID)this);<BR> }<BR> else<BR> {<BR> dwValue=0;<BR><BR> ioctlsocket(m_sock,SIO_RCVALL,&dwValue);<BR><BR> }<BR><BR><BR>/*<BR> if (n==SOCKET_ERROR)<BR> AfxMessageBox("绑定出错!");<BR> else<BR> AfxBeginThread(BeginThread,(LPVOID)this);<BR>*/<BR> //cst.Format ("%s",inet_ntoa(m_addr.sin_addr));<BR> //AfxMessageBox(cst);<BR> <BR> //closesocket(m_sock);<BR>}<BR><BR>PROTN2T proto[12]=<BR>{<BR> { IPPROTO_IP , "IP" },<BR> { IPPROTO_ICMP , "ICMP" }, <BR> { IPPROTO_IGMP , "IGMP" }, <BR> { IPPROTO_GGP , "GGP" }, <BR> { IPPROTO_TCP , "TCP" }, <BR> { IPPROTO_PUP , "PUP" }, <BR> { IPPROTO_UDP , "UDP" }, <BR> { IPPROTO_IDP , "IDP" }, <BR> { IPPROTO_ND , "NP" }, <BR> { IPPROTO_RAW , "RAW" }, <BR> { IPPROTO_MAX , "MAX" },<BR> { NULL , "" } <BR>};<BR><BR>UINT BeginThread(LPVOID p)<BR>{<BR> char buf[65535];<BR> int bytes,fig,hLen;<BR> CString destip,sourip,cst,protoname,cst_bytes,dPort,sPort;<BR> in_addr ina;<BR> IP * m_ip;<BR> TCP * m_tcp;<BR> while(true)<BR> {<BR> bytes=recv(sock1,buf,sizeof(buf),0);<BR> m_ip=(IP *)buf;<BR>/////////////////////////////////////<BR> ina.S_un.S_addr =m_ip->SrcAddr;<BR> sourip.Format ("%s",inet_ntoa(ina));<BR>////////////////////////////////////////////<BR> ina.S_un.S_addr =m_ip->DstAddr;<BR> destip.Format ("%s",inet_ntoa(ina));<BR>///////////////////////////////////////////<BR> fig=m_ip->Protocol;<BR> for (int i=0;i<12;i++)<BR> {<BR> if(proto[i].proto ==fig)<BR> {<BR> protoname.Format("%s",proto[i].pprototext );<BR> break;<BR> }<BR> }<BR>///////////////////////////////////////////////<BR> cst_bytes.Format ("%d",ntohs(m_ip->TotalLen)); //IP包的大小<BR>/////////////////////////////////////////////////////<BR> hLen=m_ip->HdrLen;<BR>/////////////////////////////////好像是这儿出的错啊!!<BR> m_tcp=(TCP *)buf+hLen*4;<BR> dPort.Format ("%d",m_tcp->DstPort );<BR> sPort.Format ("%d",m_tcp->SrcPort );<BR>/////////////////////////////////////////////////<BR> <BR>/////////////////////////////////////////////////<BR> if (destip=="192.168.0.255" ) <BR> ;<BR> else if (destip=="192.168.1.255" )<BR> ;<BR> else if (destip=="255.255.255.255")<BR> ;<BR> else<BR> {<BR> m_dlg->m_list .InsertItem (0,sourip,0);//源ip<BR> m_dlg->m_list .SetItemText (0,1,dPort);<BR> m_dlg->m_list .SetItemText (0,2,destip);//目的ip<BR> m_dlg->m_list .SetItemText (0,3,sPort);<BR> m_dlg->m_list .SetItemText (0,4,cst_bytes);//IP包大小<BR> m_dlg->m_list .SetItemText (0,5,protoname);//协议名<BR> Sleep(50);<BR> }<BR>// break;<BR> }<BR><BR>// AfxMessageBox(cst);<BR> return 0;<BR>}<BR>哪个大哥帮我看看啊
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:〖王雷〗 回复日期:2003-10-20 12:23:51
<br>内容:我是菜鸟,顺便向大家报个到啊!<BR>QQ:36658829
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:ArthurTu 回复日期:2003-10-21 16:56:11
<br>内容:首先IP header就不对<BR><BR>4位首部长度,4位IP版本号,还有不少错的地方。<BR>从哪看的?!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:〖王雷〗 回复日期:2003-10-28 13:24:34
<br>内容:知道了!已经搞定了!<BR>多谢谢啊!我加了个循环,一个字节一个字节,的看,终于全部弄对了!<BR>我是从我买的一本<网络编程>看的!<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:ArthurTu 回复日期:2003-10-28 16:36:40
<br>内容:那这本书也太。。。<BR>看《TCP/IP详解》吧。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:〖王雷〗 回复日期:2003-11-01 12:32:02
<br>内容:是不是实现(第二册)啊?<BR>那本好吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:金申乐 回复日期:2004-01-03 21:51:45
<br>内容:弄好了的能不能发给我一份?<BR>moonjsl@163.net<BR>主题请用:监听代码,谢谢
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:柯阳 回复日期:2004-01-14 22:59:47
<br>内容:up,顶一下,兄弟可以把测好的代码发给我一份?<BR>kjq@zy99.cn<BR>等待,谢谢。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:ll 回复日期:2004-01-30 11:33:29
<br>内容:1666349 vc开发者的群,呵呵,大家快进呀!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -