RDP通过蓝牙

 纳尼唐_199 发布于 2022-12-25 19:36

这是一个研发项目.通过蓝牙将Windows PC的桌面流式传输到手机上.我成功将桌面流式传输到我的Android手机720p,但问题是我无法获得直播.通过蓝牙进行编码和数据需要几毫秒,所以它不是那么直播.所以我做了什么,我为此选择了RDP.由于RDP仅适用于LAN.我没有PAN的个人资料.我写了一个代理,它只通过蓝牙将RDP数据包从localhost路由到我的电脑.在计算机端,还有另一个程序正在运行,该程序从蓝牙获取数据并将此数据发送到localhost端口3389.现在我面临的问题是,当连接启动时,套接字会自行关闭.程序最初只读取80或45个字节,然后发生异常"Socket Closed".我的问题是,RDP是否为会话打开和关闭套接字,或者是第一次连接然后使用该套接字.因为我是这个RDP的新手.建议我一些关于RDP的话题.任何帮助都非常感谢.

关于Moonzai

更新:

我正在使用以下代码来读取和写入蓝牙和套接字.

  class ReadWrite implements Runnable {

    private String name;

    private Thread thread;
    private InputStream is;
    private OutputStream os;

    private volatile boolean start = false;

    public ReadWrite(String name, InputStream is, OutputStream os) {
        this.name = name;
        this.is = is;
        this.os = os;
        thread = new Thread(this);
    }

    public void startThread() {
        start = true;
        thread.start();
    }

    public void stopThread() {
        start = false;
        try {
            if (is != null) {
                is.close();
            }

            if (os != null) {
                os.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void run() {
        System.out.println(name + " ReadWrite Started");

        byte[] buffer = new byte[8092];
        int read;

        while (start) {
            try {
                read = is.read(buffer);
                System.out.println(name + " Read: " + read);
                if (read > 0) {
                    os.write(buffer, 0, read);
                    os.flush();
                }
            } catch (Exception e) {
                e.printStackTrace();
                break;
            }
        }

        System.out.println(name + " ReadWrite Stopped");
    }
}

我开始这个线程的2个实例,如:

  ReadWrite bt2net = new ReadWrite("bt2net", btis, netos);
  ReadWrite net2bt = new ReadWrite("net2bt", netis, btos);
  bt2net.startThread();
  net2bt.startThread();

其中btis,netos,netisbtosInputStreamOutputStream.此类用于Android和PC两侧.PC端的读取长度为-1,而Android端则给出了这个异常:

  java.net.SocketException: Socket closed
  java.io.IOException: bt socket closed, read return: -1

我不知道为什么会发生这种情况.请对RDP低级别有所了解,因为我没有找到任何有用的信息.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有