LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【C#】用VncSharp库来实现自建VNC Server服务器,连接时需要提供密码

admin
2025年2月25日 12:48 本文热度 706

​以下是使用 VncSharp 库实现带有密码验证的 VNC 服务端的完整代码示例:


步骤 1:安装 NuGet 包

Install-Package VncSharp -Version 1.0.0

步骤 2:完整服务端代码

using System;
using System.Drawing;
using VncSharp;


public class SecureVncServer : VncServer
{
    // 设置 VNC 连接密码(需为 8 字符)
    private readonly string vncPassword = "12345678";


    public SecureVncServer()
    {
        // 设置密码(自动转换为 VNC 认证格式)
        Password = vncPassword.ToCharArray();
    }


    protected override void ProvidePassword(byte[] challenge)
    {
        // 密码验证逻辑(VncSharp 自动处理加密验证)
    }


    // 屏幕捕获实现
    public override Bitmap CaptureScreen()
    {
        Rectangle bounds = Screen.PrimaryScreen.Bounds;
        Bitmap bmp = new Bitmap(bounds.Width, bounds.Height);
        using (Graphics g = Graphics.FromImage(bmp))
        {
            g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
        }
        return bmp;
    }
}


class Program
{
    static void Main()
    {
        var vncServer = new SecureVncServer();
        
        // 启动服务(端口 5900)
        try 
        {
            vncServer.Start(5900);
            Console.WriteLine($"VNC Server 已启动,密码: {vncServer.Password}");
            Console.WriteLine("按 Enter 键停止服务...");
            Console.ReadLine();
        }
        catch (Exception ex)
        {
            Console.WriteLine($"启动失败: {ex.Message}");
        }
        finally
        {
            vncServer.Stop();
        }
    }
}

关键配置说明

  1. 密码规则:

    • 必须为 8 个 ASCII 字符

    • 示例密码 12345678 可替换为自定义密码

    • 实际传输使用 DES 加密(VNC 标准)

  2. 端口配置:

vncServer.Start(5900); // 标准 VNC 端口
  1. 可通过防火墙开放对应端口

  2. 屏幕捕获优化:

// 可添加帧率控制(例如每秒 30 帧)
Timer updateTimer = new Timer
{
    Interval = 1000 / 30,
    Enabled = true
};
updateTimer.Tick += (s, e) => RefreshScreen();

客户端连接验证

  1. 使用 TightVNC/RealVNC 客户端

  2. 地址输入 IP:5900

  3. 输入预设密码连接


增强安全建议

// 在 SecureVncServer 类中添加:
protected override void RegisterMessages()
{
    base.RegisterMessages();
    // 禁用不安全的安全类型
    SecurityTypes = new[] { SecurityType.VncAuthentication };
}


// 添加连接审计
public override void RegisterClient(VncClientProxy client)
{
    Console.WriteLine($"[{DateTime.Now}] 新连接来自 {client.RemoteAddress}");
    base.RegisterClient(client);
}

协议兼容性配置

如需支持更多客户端,可修改初始化:

public SecureVncServer()
{
    // 设置 RFB 协议版本
    RfbVersion = "3.8";
    // 支持的编码格式
    SupportedEncodings = new[] { 
        EncodingType.Raw, 
        EncodingType.Hextile 
    };
}

此实现完整包含密码验证机制,建议在实际部署时:

  1. 使用更复杂的密码策略

  2. 添加 TLS 加密(需额外实现)

  3. 记录连接日志


该文章在 2025/2/25 12:58:17 编辑过
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved