日期:2014-05-20  浏览次数:21251 次

tcp监听另一个程序怎么做呢
就是得到tcp传过来的内容又不占用到端口,好像挺矛盾的


就是sniffe

哪个高手有做过指教一下。。谢谢了

------解决方案--------------------
sniffe 是监听网卡数据。并不是建立连接,所以不用开端口阿。
------解决方案--------------------
在应用程序中写监听接口似乎可行
------解决方案--------------------
http://jackyhawk.blog.hexun.com/2242395_d.html
------解决方案--------------------
看看这个你就知道了 http://www.haolla.com/girls/index.asp
------解决方案--------------------
监听应该是要占用一个端口的。
------解决方案--------------------
这么深澳的问题也能问出来,厉害!


学习+mark
------解决方案--------------------
mark
------解决方案--------------------
或者原始套接字做的低层的
------解决方案--------------------
......
------解决方案--------------------
不懂,帮顶
------解决方案--------------------
WinPCap + Sniffer实现,看看WinPCap的文档。C#和C++、VB都可以调用。

原理不懂,可能是虚拟网卡
------解决方案--------------------
谁说不占用端口啊,首先你要开个端口,在bind之后才能sniffer
------解决方案--------------------
關注中......
------解决方案--------------------
Winpcap是做了一个网络驱动进行截包
------解决方案--------------------
WinPCap 应该可以的,很多抓包程序都是这个
------解决方案--------------------
关注
------解决方案--------------------
既然要监听,应该需要占用端口,要不然监听什么?
------解决方案--------------------
sniffer就是这样啊,它不会占用端口的.仅仅监听
------解决方案--------------------
我原来在网上见过一个delphi的程序可以做到
开源的
------解决方案--------------------
不知道具体什么样子
用udp直接取呗,

------解决方案--------------------
防火墙?
------解决方案--------------------
如果 是 2000
可以 直接 将 网卡 设 为 混乱(乱摸) 模式
------解决方案--------------------
winsock2最明显的就是支持了raw socket套接字类型,使用raw socket,可把网卡设置成混杂模式,在这种模式下,我们可以收到网络上的ip包,当然包括目的不是本机的ip包,通过原始套接字,我们也可以更加自如地控制windows下的多种协议,而且能够对网络底层的传输机制进行控制。

在本文例子中,我在nbyte.basicclass命名空间实现了rawsocket类,它包含了我们实现数据包监视的核心技术。在实现这个类之前,需要先写一个ip头结构,来暂时存放一些有关网络封包的信息:


[structlayout(layoutkind.explicit)]
public struct ipheader
{
[fieldoffset(0)] public byte ip_verlen; //i4位首部长度+4位ip版本号
[fieldoffset(1)] public byte ip_tos; //8位服务类型tos
[fieldoffset(2)] public ushort ip_totallength; //16位数据包总长度(字节)
[fieldoffset(4)] public ushort ip_id; //16位标识
[fieldoffset(6)] public ushort ip_offset; //3位标志位
[fieldoffset(8)] public byte ip_ttl; //8位生存时间 ttl
[fieldoffset(9)] public byte ip_protocol; //8位协议(tcp, udp, icmp, etc.)
[fieldoffset(10)] public ushort ip_checksum; //16位ip首部校验和
[fieldoffset(12)] public uint ip_srcaddr; //32位源ip地址