阅读量:0
在C#中,要捕获TCP/IP数据包,可以使用System.Net.Sockets
命名空间中的Socket
类
using System; using System.Net; using System.Net.Sockets; namespace TcpIpPacketCapture { class Program { static void Main(string[] args) { // 创建一个TCP监听器 TcpListener listener = new TcpListener(IPAddress.Any, 8080); listener.Start(); Console.WriteLine("等待客户端连接..."); // 当有客户端连接时,接受连接并开始接收数据 using (TcpClient client = listener.AcceptTcpClient()) { Console.WriteLine("客户端已连接: " + client.Client.RemoteEndPoint); // 获取网络流 NetworkStream stream = client.GetStream(); // 创建一个字节数组来存储接收到的数据 byte[] buffer = new byte[1024]; while (true) { try { // 从网络流中读取数据 int bytesRead = stream.Read(buffer, 0, buffer.Length); if (bytesRead == 0) { // 如果没有数据可读,说明客户端已断开连接 break; } // 将接收到的数据转换为字符串并打印 string data = Encoding.ASCII.GetString(buffer, 0, bytesRead); Console.WriteLine("接收到的数据: " + data); } catch (Exception ex) { Console.WriteLine("发生错误: " + ex.Message); break; } } Console.WriteLine("客户端已断开连接."); } listener.Stop(); } } }
这个示例创建了一个简单的TCP服务器,监听8080端口。当客户端连接时,服务器会接收并打印客户端发送的数据。请注意,这个示例仅适用于简单的文本数据传输。对于更复杂的数据包捕获和分析,您可能需要使用第三方库,如SharpPcap
或Pcap.Net
。