温馨提示×

C# TCP/IP数据包如何捕获

c#
小樊
95
2024-09-14 23:39:38
栏目: 编程语言

在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端口。当客户端连接时,服务器会接收并打印客户端发送的数据。请注意,这个示例仅适用于简单的文本数据传输。对于更复杂的数据包捕获和分析,您可能需要使用第三方库,如SharpPcapPcap.Net

0