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); } }
如代码所示,我创建了一个服务端开始监听,要获得接收到的数据包并对它进行操作,怎么样获得数据包呢?
有两种方式:
1,创建 SOCK_RAW 类型的 SOCKET,但是从WinXP后不被支持了;
2,使用开源抓包库,比如WinPcap SDK;
由于你使用的是C#,你可以需要先用C++编写成DLL后供C#调用。
不是吧,这么麻烦?可是上面只要求让用C#啊。
@傻乎乎的大兵: 确实是这么麻烦,很可能你理解错了上面的意思,上面可能不是要你获取IP数据包,而是写一个简单的TCP服务端。如果是后者的话,你看这篇文章:http://www.cnblogs.com/arkin/archive/2012/08/17/tcp.html
@Launcher: 额,是这样的,说是写一个客户端,不过要可以处理IP数据包,包括读取数据和输出。
@傻乎乎的大兵: 如果真是抓取IP数据包,那你只能参考第2个方法了,第1个方法不能适用于所有系统:
2,使用开源抓包库,比如WinPcap SDK;
@Launcher: 晕,上面一句话,下面跑断腿啊,我还要先学习学习Socket再说,什么都不会,突然给这么一个任务