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

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

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

​以下是使用 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