c# 监控5900 port哪个IP访问了这个IP就显示在Form里面
要实现这个功能,你可以使用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控件。
希望这个示例对你有帮助
原文地址: https://www.cveoy.top/t/topic/hNQI 著作权归作者所有。请勿转载和采集!