首页 新闻 会员 周边

大额悬赏求代码: 怎么在C#中取得IP数据包

0
悬赏园豆:50 [已解决问题] 解决于 2013-01-25 09:07
class Server {
    static void Main(string[] args) {
        Console.WriteLine("Server is running ... ");
        IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });
        TcpListener listener = new TcpListener(ip, 8500);

        listener.Start();           // 开始侦听
        Console.WriteLine("Start Listening ...");

        Console.WriteLine("\n\n输入\"Q\"键退出。");
        ConsoleKey key;
        do {
            key = Console.ReadKey(true).Key;
        } while (key != ConsoleKey.Q);
    }
}

如代码所示,我创建了一个服务端开始监听,要获得接收到的数据包并对它进行操作,怎么样获得数据包呢?

傻乎乎的大兵的主页 傻乎乎的大兵 | 初学一级 | 园豆:143
提问于:2013-01-24 16:37
< >
分享
最佳答案
0

有两种方式:

1,创建  SOCK_RAW 类型的 SOCKET,但是从WinXP后不被支持了;

2,使用开源抓包库,比如WinPcap SDK;

由于你使用的是C#,你可以需要先用C++编写成DLL后供C#调用。

收获园豆:45
Launcher | 高人七级 |园豆:45045 | 2013-01-24 16:45

不是吧,这么麻烦?可是上面只要求让用C#啊。

傻乎乎的大兵 | 园豆:143 (初学一级) | 2013-01-24 16:55

@傻乎乎的大兵: 确实是这么麻烦,很可能你理解错了上面的意思,上面可能不是要你获取IP数据包,而是写一个简单的TCP服务端。如果是后者的话,你看这篇文章:http://www.cnblogs.com/arkin/archive/2012/08/17/tcp.html

Launcher | 园豆:45045 (高人七级) | 2013-01-24 16:58

@Launcher: 额,是这样的,说是写一个客户端,不过要可以处理IP数据包,包括读取数据和输出。

傻乎乎的大兵 | 园豆:143 (初学一级) | 2013-01-24 17:07

@傻乎乎的大兵: 如果真是抓取IP数据包,那你只能参考第2个方法了,第1个方法不能适用于所有系统:

2,使用开源抓包库,比如WinPcap SDK;

Launcher | 园豆:45045 (高人七级) | 2013-01-24 17:08

@Launcher: 晕,上面一句话,下面跑断腿啊,我还要先学习学习Socket再说,什么都不会,突然给这么一个任务

傻乎乎的大兵 | 园豆:143 (初学一级) | 2013-01-24 17:14
其他回答(1)
0
收获园豆:5
Dynamic-xia | 园豆:287 (菜鸟二级) | 2013-01-24 16:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册