0

我正在用 C# 构建一个 win7 程序,它充当数据包嗅探器,用于搜索特定数据包,并在接收到它后对数据包源执行跟踪路由。这是捕获的外观,它捕获和使用wireshark的结果是相同的。

//Start capture
                startStop.Text = "Stop";

                capture = true;

                socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);

                info.Text = "Capturing on: " + ifaces.SelectedItem.ToString();
                socket.Bind(new IPEndPoint(ifs[ifaces.SelectedIndex], 0));

                socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);

                byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
                byte[] byOut = new byte[4];

                socket.IOControl(IOControlCode.ReceiveAll, byTrue, byOut);

                socket.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(OnReceive), null);

发送特定数据包的程序是一个将数据发送到 IP 地址的 Android 应用程序。

try{
            string server="http://32.32.32.32/"
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(server);
            httppost.setEntity(new StringEntity("TRACERT"));
            HttpResponse response = httpclient.execute(httppost);
        }catch(Exception e){

        }

问题是它在执行方法上超时。服务器是我的 PC 的外部 IP(在此处更改)。这里有什么问题?

4

1 回答 1

0

据我了解您的问题,您尝试将数据从客户端发送到数据包嗅探器。

TCP 连接的主要参与者是服务器和客户端。服务器正在等待来自客户端的连接请求。客户端启动连接并经常发送请求。

数据包嗅探器只是一个旁观者,监听客户端和服务器的通信。

在您的描述中,我找不到有关服务器的任何信息,所以我认为没有。由于没有服务器,无法建立连接,客户端超时。

我不知道您尝试实现的确切想法,但也许您不需要嗅探器而是服务器。但是,如果您需要实现嗅探器,您应该在您的计算机上运行一个(Web)服务器软件,该软件接受来自您的客户端的连接尝试。

于 2013-09-30T11:48:52.703 回答