从浏览器建立任意 TCP 连接 [重复]

Posted

技术标签:

【中文标题】从浏览器建立任意 TCP 连接 [重复]【英文标题】:Make arbitrary TCP connection from browser [duplicate] 【发布时间】:2019-01-06 19:21:38 【问题描述】:

我的网络应用程序需要连接到网络上的本地设备才能获取数据。

设备具有静态 IP 地址并通过 P03 协议进行通信。当我使用 Telnet 连接时,设备会在我的控制台中返回纯文本。

我需要在浏览器中使用 javascript 做同样的事情。当用户点击一个按钮时,它应该通过 TCP 连接到192.168.0.1:8000 并在页面上显示接收到的文本数据。

问题在于这是一个 Web 应用程序。可以做客户端吗?

(我也愿意接受除 JavaScript 之外的其他建议。)

【问题讨论】:

“咨询”不是标准的技术术语。你什么意思。 “填写一个字段” - 什么样的字段? 您是在问如何发出 HTTP 发布请求吗? 我编辑了帖子,更好地解释了自己 无论这个 P03 协议是什么,如果它不是基于 HTTP 的,那么您可能很难尝试从 Javascript 处理它。另一方面,如果它是一个常规的 HTTP 请求,那么 XmlHttpRequest 就是你所需要的。 【参考方案1】:

不幸的是,您不能只连接到任何 TCP 套接字。浏览器可以建立连接,但它必须是以下协议之一:

HTTP (HTTP[S] 1.0/1.1/2) Web Socket(另一种实际运行在 HTTP 之上的应用协议) WebRTC(用于点对点,也可用于客户端-服务器通信,但在这里没有用处)

一种方法是运行各种代理。您需要创建一个代理来接受来自浏览器的 Web Socket 连接,然后将发送/接收的数据中继到此 TCP 服务器。缺点是这需要服务器。

另一种方法是制作浏览器扩展。另见:https://***.com/a/17567373/362536

【讨论】:

@user1283776 我回滚了你的编辑...我不想在这里添加混淆,暗示 Web Sockets 可以以某种方式与 HTTP 上下文断开连接。

以上是关于从浏览器建立任意 TCP 连接 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

TCP连接与HTTP请求

从浏览器输入域名到展示页面都发生了什么

UDP和TCP有啥区别

http协议工作原理(精简)

Http协议与TCP协议简单理解

Http协议与TCP协议简单理解