⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_56719.htm

📁 vc
💻 HTM
字号:
<p>
序号:56719 发表者:〖王雷〗 发表日期:2003-10-20 12:22:28
<br>主题:截取IP包了!可是好像我的格式不对啊!所以总是出错!
<br>内容:这是我的全部源代码!<BR><BR>这是我封的IP,TCP包头<BR>typedef struct _IP <BR>{<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;&nbsp; Version;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;&nbsp; HdrLen;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;BYTE ServiceType;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD TotalLen;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD ID;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp; Flags;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WORD&nbsp;&nbsp; FragOff;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;BYTE TimeToLive;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BYTE Protocol;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD HdrChksum;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp; SrcAddr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp; DstAddr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BYTE Options[0];<BR>} IP;<BR>//TCP头<BR>typedef struct _TCP<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD SrcPort;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD DstPort;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD SeqNum;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DWORD AckNum;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BYTE DataOff;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BYTE Flags;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD Window;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD Chksum;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WORD UrgPtr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp; TCP;<BR>///////////////////////////<BR>typedef struct _PROTN2T{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这是协议名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int proto;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char * pprototext;<BR>}PROTN2T;<BR>///////////////////////////////<BR>void CMySocket::CReate()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;char localName[256];<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString cst;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;dwValue=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_sock=socket(AF_INET,SOCK_RAW,IPPROTO_RAW);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;setsockopt(m_sock,SOL_SOCKET,SO_RCVTIMEO,(const char *)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;rcvtimeo,sizeof(rcvtimeo));<BR>&nbsp;&nbsp;&nbsp;&nbsp;gethostname(localName,sizeof(localName)-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;HOSTENT * host=gethostbyname(localName);<BR>&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&amp;(m_addr.sin_addr),(const void *)host-&gt;h_addr_list [0],host-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;h_length );<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;m_addr.sin_family =host-&gt;h_addrtype ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_addr.sin_port =htons(7070);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int n=bind(m_sock,(PSOCKADDR)&amp;m_addr,sizeof(m_addr));<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(n!=SOCKET_ERROR) <BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwValue=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioctlsocket(m_sock,SIO_RCVALL,&amp;dwValue);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sock1=m_sock;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxBeginThread(BeginThread,(LPVOID)this);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwValue=0;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioctlsocket(m_sock,SIO_RCVALL,&amp;dwValue);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR><BR>/*<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (n==SOCKET_ERROR)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(&#34;绑定出错!&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxBeginThread(BeginThread,(LPVOID)this);<BR>*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;//cst.Format (&#34;%s&#34;,inet_ntoa(m_addr.sin_addr));<BR>&nbsp;&nbsp;&nbsp;&nbsp;//AfxMessageBox(cst);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//closesocket(m_sock);<BR>}<BR><BR>PROTN2T proto[12]=<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ IPPROTO_IP&nbsp;&nbsp; , &#34;IP&#34; },<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ IPPROTO_ICMP , &#34;ICMP&#34; },&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ IPPROTO_IGMP , &#34;IGMP&#34; }, <BR>&nbsp;&nbsp;&nbsp;&nbsp;{ IPPROTO_GGP&nbsp;&nbsp;, &#34;GGP&#34; },&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ IPPROTO_TCP&nbsp;&nbsp;, &#34;TCP&#34; },&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ IPPROTO_PUP&nbsp;&nbsp;, &#34;PUP&#34; },&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ IPPROTO_UDP&nbsp;&nbsp;, &#34;UDP&#34; },&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ IPPROTO_IDP&nbsp;&nbsp;, &#34;IDP&#34; },&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ IPPROTO_ND&nbsp;&nbsp; , &#34;NP&#34;&nbsp;&nbsp;},&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ IPPROTO_RAW&nbsp;&nbsp;, &#34;RAW&#34; },&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ IPPROTO_MAX&nbsp;&nbsp;, &#34;MAX&#34; },<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ NULL , &#34;&#34; } <BR>};<BR><BR>UINT BeginThread(LPVOID p)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;char buf[65535];<BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;bytes,fig,hLen;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString destip,sourip,cst,protoname,cst_bytes,dPort,sPort;<BR>&nbsp;&nbsp;&nbsp;&nbsp;in_addr ina;<BR>&nbsp;&nbsp;&nbsp;&nbsp;IP&nbsp;&nbsp;* m_ip;<BR>&nbsp;&nbsp;&nbsp;&nbsp;TCP * m_tcp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(true)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bytes=recv(sock1,buf,sizeof(buf),0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_ip=(IP *)buf;<BR>/////////////////////////////////////<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ina.S_un.S_addr =m_ip-&gt;SrcAddr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sourip.Format (&#34;%s&#34;,inet_ntoa(ina));<BR>////////////////////////////////////////////<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ina.S_un.S_addr =m_ip-&gt;DstAddr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destip.Format (&#34;%s&#34;,inet_ntoa(ina));<BR>///////////////////////////////////////////<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fig=m_ip-&gt;Protocol;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i=0;i&lt;12;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(proto[i].proto ==fig)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protoname.Format(&#34;%s&#34;,proto[i].pprototext );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>///////////////////////////////////////////////<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cst_bytes.Format (&#34;%d&#34;,ntohs(m_ip-&gt;TotalLen));&nbsp;&nbsp;&nbsp;&nbsp; //IP包的大小<BR>/////////////////////////////////////////////////////<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hLen=m_ip-&gt;HdrLen;<BR>/////////////////////////////////好像是这儿出的错啊!!<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_tcp=(TCP *)buf+hLen*4;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dPort.Format (&#34;%d&#34;,m_tcp-&gt;DstPort );<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sPort.Format (&#34;%d&#34;,m_tcp-&gt;SrcPort );<BR>/////////////////////////////////////////////////<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>/////////////////////////////////////////////////<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (destip==&#34;192.168.0.255&#34; ) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (destip==&#34;192.168.1.255&#34; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (destip==&#34;255.255.255.255&#34;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_dlg-&gt;m_list .InsertItem&nbsp;&nbsp;(0,sourip,0);//源ip<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_dlg-&gt;m_list .SetItemText (0,1,dPort);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_dlg-&gt;m_list .SetItemText (0,2,destip);//目的ip<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_dlg-&gt;m_list .SetItemText (0,3,sPort);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_dlg-&gt;m_list .SetItemText (0,4,cst_bytes);//IP包大小<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_dlg-&gt;m_list .SetItemText (0,5,protoname);//协议名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(50);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>//&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(cst);<BR>&nbsp;&nbsp;&nbsp;&nbsp;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 + -