要实现这个功能,你可以使用C#的Socket编程来监听5900端口,并在有连接时显示连接的IP地址。

以下是一个示例代码:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;

namespace PortMonitor
{
    public partial class MainForm : Form
    {
        private Socket listener;

        public MainForm()
        {
            InitializeComponent();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            StartListening(5900);
        }

        private void StartListening(int port)
        {
            try
            {
                // 创建监听器
                listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                listener.Bind(new IPEndPoint(IPAddress.Any, port));
                listener.Listen(10);

                // 开始异步接受连接
                listener.BeginAccept(new AsyncCallback(OnClientConnect), null);
            }
            catch (Exception ex)
            {
                MessageBox.Show("监听失败:" + ex.Message);
            }
        }

        private void OnClientConnect(IAsyncResult ar)
        {
            try
            {
                // 接受连接并获取客户端Socket
                Socket clientSocket = listener.EndAccept(ar);

                // 获取客户端IP地址
                string clientIP = ((IPEndPoint)clientSocket.RemoteEndPoint).Address.ToString();

                // 在Form中显示连接的IP地址
                ShowIP(clientIP);

                // 继续异步接受下一个连接
                listener.BeginAccept(new AsyncCallback(OnClientConnect), null);
            }
            catch (Exception ex)
            {
                MessageBox.Show("接受连接失败:" + ex.Message);
            }
        }

        private void ShowIP(string ip)
        {
            // 在Form中显示连接的IP地址
            if (InvokeRequired)
            {
                Invoke(new Action<string>(ShowIP), ip);
            }
            else
            {
                textBox1.AppendText(ip + Environment.NewLine);
            }
        }
    }
}

在这个示例中,我们创建了一个Windows Forms应用程序(Form类为MainForm),并在Form中添加了一个TextBox控件(名为textBox1)用于显示连接的IP地址。

在Form的Load事件中调用StartListening方法来开始监听5900端口。StartListening方法中创建了一个Socket监听器,并绑定到指定的IP地址和端口上。然后使用BeginAccept方法开始异步接受连接。

在OnClientConnect方法中,当有连接到达时,我们获取客户端的Socket和IP地址,并调用ShowIP方法来在Form中显示连接的IP地址。然后再次调用BeginAccept方法继续接受下一个连接。

ShowIP方法用于在Form中显示连接的IP地址。由于Socket的回调方法可能在不同的线程上执行,所以我们需要通过Invoke方法来在UI线程上更新UI控件。

希望这个示例对你有帮助

c# 监控5900 port哪个IP访问了这个IP就显示在Form里面

原文地址: https://www.cveoy.top/t/topic/hNQI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录