HarmonyOS鸿蒙Next中IP连接能否做个记忆功能

HarmonyOS鸿蒙Next中IP连接能否做个记忆功能 cke_143.png

这里太难用了,本来觉得wifi连接手机测试能够覆盖绝大多数常见,不需要连接线,很方便,但是每次都得输ip,而且输入ip的方式还是很恶心

不能一直保存上次输入的ip吗?有问题,我可以自己修改啊,或者下面列出我历史输入过的ip,保存3-4个ip就够用了啊

吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽吐槽


更多关于HarmonyOS鸿蒙Next中IP连接能否做个记忆功能的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

我自己做了一个无线连接的脚本楼主感兴趣可以尝试一下这个 保存为bat文件运行

cke_1942.png

@echo off
:: 切换 CMD 到 UTF-8 显示中文
chcp 65001 >nul
setlocal enabledelayedexpansion

:: 历史记录文件路径
set "HISTORY_FILE=%~dp0hdc_connect_history.txt"

echo ============================================
echo         HDC TCP 设备连接工具(手动端口)
echo --------------------------------------------
echo.

:: 统一的设备列表索引
set total_count=0

:: Step 1: 加载历史连接记录
if exist "%HISTORY_FILE%" (
    echo ============================================
    echo              历史连接记录
    echo --------------------------------------------
    for /f "usebackq tokens=1,2 delims=:" %%a in ("%HISTORY_FILE%") do (
        set /a total_count+=1
        set "device_ip[!total_count!]=%%a"
        set "device_port[!total_count!]=%%b"
        set "device_source[!total_count!]=history"
        echo !total_count!. %%a:%%b ^(历史记录^)
    )
    echo --------------------------------------------
    echo.
)

set history_end=%total_count%

:: Step 2: 查询 TCP 设备列表
echo 正在查询 HDC TCP 设备...
echo --------------------------------------------
set "ADDED_IPS="

for /f "tokens=1,2*" %%a in ('hdc list targets -v 2^>nul') do (
    set "dev_ip=%%a"
    set "conn_type=%%b"
    if /i "!conn_type!"=="TCP" (
        for /f "tokens=1 delims=:" %%i in ("!dev_ip!") do (
            set "ip_only=%%i"
            set "found=0"
            for %%j in (!ADDED_IPS!) do (
                if "%%j"=="!ip_only!" set found=1
            )
            if !found! equ 0 (
                set /a total_count+=1
                set "device_ip[!total_count!]=!ip_only!"
                set "device_port[!total_count!]="
                set "device_source[!total_count!]=scan"
                set "ADDED_IPS=!ADDED_IPS! !ip_only!"
                echo !total_count!. !ip_only! ^(扫描发现^)
            )
        )
    )
)

if %total_count% equ %history_end% (
    if %history_end% equ 0 (
        echo [Warning] 未检测到 TCP 设备,且无历史记录
        echo.
        echo --------------------------------------------
        echo 你需要手动输入 IP 地址和端口号
        echo --------------------------------------------
        echo.
        goto MANUAL_INPUT
    ) else (
        echo [Warning] 未检测到新的 TCP 设备
    )
) else (
    echo --------------------------------------------
    echo 共检测到 %total_count% 个设备(包含历史记录)
)

echo.

:: Step 3: 用户选择设备或手动输入
echo ============================================
set /p DEVICE_CHOICE=请输入编号选择设备(1-%total_count%),或输入 IP 地址,或输入 M 手动输入:

if /i "%DEVICE_CHOICE%"=="M" goto MANUAL_INPUT

if "%DEVICE_CHOICE%"=="" (
    echo [Error] 未输入 退出程序
    pause
    exit /b
)

:: 判断输入是编号还是直接 IP
set "TARGET_IP="
set "HISTORY_PORT="
for /l %%i in (1,1,%total_count%) do (
    if "%DEVICE_CHOICE%"=="%%i" (
        set "TARGET_IP=!device_ip[%%i]!"
        set "HISTORY_PORT=!device_port[%%i]!"
        set "SOURCE_TYPE=!device_source[%%i]!"
    )
)

if not defined TARGET_IP (
    set "TARGET_IP=%DEVICE_CHOICE%"
    set "SOURCE_TYPE=manual"
)

echo.
echo 你已选择 IP:%TARGET_IP%

:: 如果是历史记录且有端口号,询问是否使用
if defined HISTORY_PORT (
    echo 历史端口号:%HISTORY_PORT%
    echo.
    set /p USE_HISTORY_PORT=直接按回车使用历史端口,或输入新端口号:

    if "!USE_HISTORY_PORT!"=="" (
        set "TARGET_PORT=%HISTORY_PORT%"
        goto CONNECT_DEVICE
    ) else (
        set "TARGET_PORT=!USE_HISTORY_PORT!"
        goto VALIDATE_PORT
    )
)

:: Step 4: 输入端口号
:INPUT_PORT_STEP
echo 请输入端口号(常用:5555、8710)
echo.

:INPUT_PORT
set /p TARGET_PORT=端口号:
if "%TARGET_PORT%"=="" (
    echo [Error] 端口号不能为空
    echo.
    goto INPUT_PORT
)

:VALIDATE_PORT
:: 验证端口号是否为纯数字
echo %TARGET_PORT%| findstr /r "^[0-9][0-9]*$" >nul
if !errorlevel! neq 0 (
    echo [Error] 端口号必须是数字
    echo.
    goto INPUT_PORT
)

:: 验证端口号范围
if %TARGET_PORT% lss 1 (
    echo [Error] 端口号必须大于 0
    echo.
    goto INPUT_PORT
)
if %TARGET_PORT% gtr 65535 (
    echo [Error] 端口号不能超过 65535
    echo.
    goto INPUT_PORT
)

goto CONNECT_DEVICE

:: 手动输入 IP 地址
:MANUAL_INPUT
echo.
echo ============================================
echo           手动输入设备信息
echo --------------------------------------------
set /p TARGET_IP=请输入设备 IP 地址:

if "%TARGET_IP%"=="" (
    echo [Error] IP 地址不能为空
    echo.
    goto MANUAL_INPUT
)

goto INPUT_PORT_STEP

:: Step 5: 拼接 IP:PORT 并尝试连接
:CONNECT_DEVICE
set TARGET=%TARGET_IP%:%TARGET_PORT%
echo.
echo ============================================
echo 正在尝试连接设备:%TARGET%
echo --------------------------------------------
set CONNECT_STATUS=0
set ALREADY_CONNECTED=0
set "RESPONSE="

for /f "delims=" %%i in ('hdc tconn %TARGET% 2^>^&1') do (
    set "RESPONSE=!RESPONSE!%%i "
    echo %%i

    echo %%i | find /i "Connect OK" >nul
    if !errorlevel!==0 set CONNECT_STATUS=1

    echo %%i | find /i "Target is connected" >nul
    if !errorlevel!==0 set ALREADY_CONNECTED=1

    echo %%i | find /i "Connect failed" >nul
    if !errorlevel!==0 set CONNECT_STATUS=2
)

echo --------------------------------------------
if !CONNECT_STATUS!==1 (
    echo [OK] 连接成功
    echo.
    echo 设备 %TARGET% 已成功连接 你现在可以通过编译器在设备上调试程序
    call :SAVE_HISTORY "%TARGET_IP%" "%TARGET_PORT%"
) else if !ALREADY_CONNECTED!==1 (
    echo [Info] 设备已连接
    echo.
    echo 设备 %TARGET% 当前已经处于连接状态
    call :SAVE_HISTORY "%TARGET_IP%" "%TARGET_PORT%"
) else if !CONNECT_STATUS!==2 (
    echo [Fail] 连接失败
    echo.
    echo 无法连接到设备 %TARGET%
    echo.
    echo 请检查以下项:
    echo 1. IP 地址是否正确
    echo 2. 端口号是否正确
    echo 3. 设备是否开启无线调试模式
    echo 4. 设备和电脑是否在同一网络
    echo 5. 防火墙是否阻止连接
) else (
    echo [Warning] 未知状态
    echo.
    echo HDC 返回了意外的响应 请查看上方输出信息
)
echo.
pause
exit /b

:: 保存连接历史的子程序
:SAVE_HISTORY
set "SAVE_IP=%~1"
set "SAVE_PORT=%~2"
set "NEW_ENTRY=%SAVE_IP%:%SAVE_PORT%"
set "ENTRY_EXISTS=0"

:: 检查是否已存在
if exist "%HISTORY_FILE%" (
    for /f "usebackq delims=" %%a in ("%HISTORY_FILE%") do (
        if "%%a"=="%NEW_ENTRY%" set "ENTRY_EXISTS=1"
    )
)

:: 如果不存在,添加到历史记录(添加到文件开头,保持最新的在前)
if !ENTRY_EXISTS!==0 (
    if exist "%HISTORY_FILE%" (
        :: 创建临时文件
        echo %NEW_ENTRY%>"%HISTORY_FILE%.tmp"
        type "%HISTORY_FILE%">>"%HISTORY_FILE%.tmp"
        move /y "%HISTORY_FILE%.tmp" "%HISTORY_FILE%" >nul
    ) else (
        echo %NEW_ENTRY%>"%HISTORY_FILE%"
    )
    echo [Info] 已保存到历史记录
) else (
    :: 如果已存在,将其移到最前面
    findstr /v /x /c:"%NEW_ENTRY%" "%HISTORY_FILE%">"%HISTORY_FILE%.tmp"
    echo %NEW_ENTRY%>"%HISTORY_FILE%.new"
    type "%HISTORY_FILE%.tmp">>"%HISTORY_FILE%.new"
    move /y "%HISTORY_FILE%.new" "%HISTORY_FILE%" >nul
    del "%HISTORY_FILE%.tmp" >nul 2>&1
)
goto :eof

更多关于HarmonyOS鸿蒙Next中IP连接能否做个记忆功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next的IP连接记忆功能可通过持久化存储实现。使用Preferences或分布式数据对象存储IP配置,应用启动时自动读取并恢复连接状态。系统服务层可封装网络配置管理,支持多场景连接参数保存。需在权限声明中配置网络访问权限,确保数据安全存储。

HarmonyOS Next的DevEco Studio目前确实没有内置IP地址记忆功能,每次通过WiFi连接真机调试都需要手动输入IP,这影响了开发效率。

从技术实现角度看,这个功能是完全可以添加的。开发者工具可以:

  1. 在本地保存最近成功连接过的IP地址列表(例如3-5个)。
  2. 提供下拉选择或自动补全,避免重复输入。
  3. 允许手动清除历史记录。

这属于工具链的体验优化,不涉及系统底层限制。建议通过官方渠道(如DevEco Studio的反馈入口)提交这个功能需求,用户反馈多了优先级自然会提高。目前只能手动记录常用设备的IP。

回到顶部