android java socket server端 可以不断的连接断开,不断的收发 TCP转发

news2024/9/17 8:46:18

在这里插入图片描述

adb.exe forward tcp:5902 tcp:5902
前面本地5901 转发到 后面设备为5902

查看转发
adb forward --list

删除所有转发
adb forward --remove-all
    public static final String TAG = "Communicate";
    private static boolean isEnable;
    private final WebConfig webConfig;//配置信息类
    private final ExecutorService threadPool;//线程池
    private ServerSocket socket;
 public void startServerAsync() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                doProcSync();
            }
        }).start();
    }
    private void doProcSync() {
        try {
            InetSocketAddress socketAddress = new InetSocketAddress(webConfig.getPort());
            socket = new ServerSocket();
            socket.setReuseAddress(true);
            socket.bind(socketAddress);
            AppServiceApplication.mHandler.post(new Runnable() {
                @Override
                public void run() {
                    AppUtils.setTextView(MainActivity.getTextViewInfo(), "start server success");
                }
            });
            isEnable = true;
            LogS.e(TAG, "remotePeer...............进入循环等待客户端连接 " + isEnable);
            while (isEnable) {
                final Socket remotePeer = socket.accept();
                LogS.d(TAG, "有一个新连接");
                threadPool.submit(new Runnable() {
                    @Override
                    public void run() {
                            LogS.d(TAG, "接收处理线程 isEnable:" + isEnable);
                            receiveData(remotePeer);
                    }
                });
            }
            LogS.d(TAG, "退出等待客户端循环");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    private void receiveData(final Socket remotePeer) {
        try {
            InputStream inputStream = remotePeer.getInputStream();
            byte buffer[] = new byte[2048];
            int len=0;
            while ((len = inputStream.read(buffer)) != -1)  { //阻塞 直到
                String message = new String(buffer).substring(0, len);
                LogS.d(TAG, "接收报文:" + message);
                sendData(remotePeer, message);
                //recvDataDeal(remotePeer,message); //详细处理 并 根据接收报文做出发送等响应
            }
            LogS.d(TAG, "客户端断开连接");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1962697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jenkins流水线语法--withCredentials篇

jenkins流水线语法--withCredentials篇 (在流水线代码中不显示明文密码) 在jenkinsfile中进行harbor登录上传镜像时直接用的密码,在代码中不怎么严谨,也缺失安全性;在网上查找资料和大佬们的博客,得出一篇完…

一起来做几道有趣的概率题

看到一篇叫做《和上帝一起掷骰子》的文章,里面提到了很多概率有关的问题,不少经过计算得出的概率都与人第一看上去产生的直觉大相径庭。所以,人类的直觉往往是靠不住的。 举两个例子: 若1千人中有1人携带hiv病毒,有一种…

电脑卡了怎么办?

在日常使用电脑的过程中,我们可能会遇到各种各样的问题,其中电脑卡顿是很让人心烦的问题之一。电脑卡顿不仅会影响我们的工作效率,还会让人感到非常烦恼。本文将详细介绍电脑卡顿的常见原因及其解决方法,帮助大家轻松应对这一问题…

深入浅出消息队列----【延迟消息的实现原理】

深入浅出消息队列----【延迟消息的实现原理】 粗说 RocketMQ 的设计细说 RocketMQ 的设计这样实现是否有什么问题? 本文仅是文章笔记,整理了原文章中重要的知识点、记录了个人的看法 文章来源:编程导航-鱼皮【yes哥深入浅出消息队列专栏】 粗…

四步教你快速解决UE5文件迁移失败❗️

本期作者:尼克 易知微3D引擎技术负责人 不知道大家在用UE5迁移文件时,有没有发现这个问题:如果文件输出的路径选择了非项目路径,那么UE会提示无法迁移。在UE4中,这样做是不存在问题的,只要选择「忽略」就可…

OS—文件系统

目录 一. 文件系统结构I/O 控制层基本文件系统文件组织模块逻辑文件系统 二. 文件系统布局文件系统在磁盘中的结构主引导记录(MasterBoot Record,MBR)引导块(boot block)超级块(super block)文件系统中空闲块的信息 文件系统在内存中的结构 三. 外存空间管理空闲表法空闲链表法…

关于CDN

CDN 代表内容分发网络(Content Delivery Network)它是一种通过将内容复制到多个地理位置分散的服务器上,从而加速网络内容传输的技术。CDN 的主要目的是提高用户访问速度、减少延迟和提升网站的可靠性。 具体来说,CDN 通过以下方…

飞创直线模组桁架机械手优势及应用领域

随着工业自动化和智能制造的发展,直线模组桁架机械手极大地减轻了人类的体力劳动负担,在危险性、重复性高的作业环境中展现出了非凡的替代能力,引领着工业生产向自动化、智能化方向迈进。 一、飞创直线模组桁架机械手优势 飞创直线模组桁架…

爬虫问题---ChromeDriver的安装和使用

一、安装 1.查看chrome的版本 在浏览器里面输入 chrome://version/ 回车查看浏览器版本 Chrome的版本要和ChromeDriver的版本对应,否则会出现版本问题。 2.ChromeDriver的版本选择 114之前的版本:https://chromedriver.storage.googleapis.com/index.ht…

mmdetection:用于目标检测、实例分割、全景分割和半监督目标检测的工具包

MMDetection 是一个基于 PyTorch 的开源目标检测工具箱,是 OpenMMLab 项目的一部分。该工具箱采用模块化设计,使用户能够通过组合不同组件轻松构建自定义的目标检测框架。 MMDetection 支持多种检测任务,包括目标检测、实例分割、全景分割和…

【ROS 最简单教程 002/300】ROS 集成开发环境安装: Noetic

💗 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑,能帮忙解决的我会尽力 ! 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 如果已有 linux 环境 (如双系统等),可跳过步骤 1 ~ 👉 保姆级图文安装教程指路…

Python_Flask学习笔记

1.配置 查询字符串的形式传参 app.route(/book/list) def book_list():page request.args.get(page,default1,typeint)return f"您获取的是{page}的图书列表!"if __name__ __main__:app.run()3.HTML模版渲染 from flask import Flask,render_templa…

大厂的堡垒机到底是啥?为什么需要它?

什么是堡垒机 堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及…

使用 Elastic Observability 中的 OpenTelemetry 进行基础设施监控

作者:来自 Elastic ISHLEEN KAUR 将 OpenTelemetry 与 Elastic Observability 相结合,形成应用程序和基础设施监控解决方案。 在 Elastic,我们最近决定全面采用 OpenTelemetry 作为首要的数据收集框架。作为一名可观察性工程师,我…

YOLOv9最新最全代码复现(论文复现)

YOLOv9最新最全代码复现(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 YOLOv9最新最全代码复现(论文复现)引言YOLOv9模型概述模型框架图环境搭建及训练推理环境配置数据集准备训练过程测试和评估实践应用 报错修…

【CVPR2024】Efficient LoFTR: 高效的 LoFTR:具有类似稀疏的速度的半密集局部特征匹配

Efficient LoFTR: 高效的 LoFTR:具有类似稀疏的速度的半密集局部特征匹配 Efficient LoFTR realtime_demo 0.摘要 \qquad 我们提出了一种新的方法来有效地产生跨图像的半密集匹配。以往的无探测器匹配器LoFTR在处理大视点变化和纹理差的场景下表现出了出色的匹配能力…

【零基础必看的前端教程】——JavaScript(八)函数

欢迎大家打开前端的新篇章——JavaScript,JavaScript与HTML、CSS合称为前端三大件,JavaScript是前端的重中之重,小洪将继续以零基础视角,带你循序渐进学习前端知识,一看就懂,小白也能转行做前端&#xff01…

创建个人公私钥对

Windows电脑 本地电脑打开命令输入框,如windows WINR–cmd打开cmd窗口输入ssh-keygen -t rsa -C “Remote dev” ,按三次回车,即可看到本地生成的公私钥进入用户目录,如windows为C:\Users\xxx(个人域账号).ssh,可看到…

在C++程序中新建并使用库

创建一个新的cpp文件后,定义一个函数 我们希望这个函数是可以被多个程序调用的,而不是直接输入在程序中进行编译。在C程序中,不是所有代码都会被编译成可执行文件,只有main函数所在的程序才可以生成可执行文件。而这个库是通过上一…

(第三期)书生大模型实战营——书生大模型全链路开源开放体系

任务及教程来自书生大模型实战营https://github.com/InternLM/Tutorial