You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Shell环境下WebSocket客户端请求发送问题求助

Android命令行Shell通过WebSocket请求本地服务的方法

WebSocket不是普通TCP连接,需要先完成HTTP握手,再按特定帧格式传输数据,这也是你用nc直接操作失败的原因。下面提供两种可行方案:

方案一:用wscat工具(推荐)

wscat是专门的WebSocket命令行客户端,操作简单,需先在Android上配置Node.js环境(比如用Termux):

  1. 安装Node.js:
    pkg install nodejs
    
  2. 全局安装wscat:
    npm install -g wscat
    
  3. 连接WebSocket服务并发送请求:
    wscat -c ws://localhost:port
    
    连接成功后,直接输入要发送的消息,回车就能收到服务端返回的响应体。

方案二:手动用nc模拟WebSocket握手(适合无Node.js环境场景)

如果必须用nc,需先手动完成握手,再按WebSocket帧格式发送数据:

  1. 用nc连接目标端口:
    nc localhost port
    
  2. 输入以下握手请求(注意每一行结尾必须是\r\n,最后留空一行):
    GET / HTTP/1.1
    Host: localhost:port
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
    Sec-WebSocket-Version: 13
    
    发送后会收到服务端的握手响应,确认连接建立。
  3. 发送数据需要按WebSocket帧格式打包(客户端发送必须带掩码),比如发送文本"Hello",对应的十六进制帧内容是:
    \x81\x85\x37\xfa\x21\x3d\x7f\x9f\x4d\x51\x58
    
    输入这段十六进制内容后,就能收到服务端的响应(响应帧也需要解析格式才能看到明文)。

注意:手动帧格式处理非常繁琐,除非必要,优先用wscat工具。

内容的提问来源于stack exchange,提问作者Dmitry Kozin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 16:33:13