Websocket无法访问本地网络客户端服务

本文关键字:客户端 服务 本地网络 访问 Websocket | 更新日期: 2023-09-27 18:17:15

本地网络中websocket连接出现问题。

场景:

对于我的笔记本电脑(Win7),我写了一个打开websocket-server端口2014的服务。因为websockets在windows 7中默认不启用,所以我使用supersocket库(http://www.supersocket.net/)。

对于客户端,我写了一个android应用程序与sencha touch和Phonegap。为了使websocket-支持android设备的版本低于4.4,我已经集成了phonegap的websocket- plugin。

原因是在android设备和笔记本电脑之间打开一个websocket连接,通过android应用程序控制笔记本电脑。这两个设备都是同一个本地网络的成员。

问题:

在安装了两个应用程序(windows服务和android应用程序)之后,我试图将我的android设备与笔记本电脑的服务连接起来。第一步是在客户端打开连接:

var connection = new WebSocket('ws://192.168.178.21:2014');

但是在我的windows服务的事件日志中没有记录成功的连接。

之后,我打开笔记本电脑的浏览器并测试了相同的代码-成功。客户端和服务端可以互相通信

所以我已经在我的android设备上测试了websocket支持:将websocket-url更改为
var connection = new WebSocket('ws://echo.websocket.org');

和可以连接到服务器-> Android websockets是可以的。

第三步是禁用防火墙并检查与Wireshark的连接:

截图:http://www.directupload.net/file/d/3710/y9t79npy_png.htm

192.168.178.21 ->笔记本IP

192.168.178.23 -> Android设备IP

所以看起来数据包到达了我的笔记本电脑,但没有到达服务。附加尝试使用安全wss://协议-失败。

别再胡思乱想了。如果能得到一些帮助,我将非常高兴。

Websocket无法访问本地网络客户端服务

所以看起来数据包到达了我的笔记本电脑,但没有到达服务。

可能是服务器绑定到特定的IP地址或主机名?通常,服务器将隐式绑定到所有接口,例如0.0.0.0,但有时它们绑定到一个特定的接口。如果发生这种情况,那么您需要连接到相同的接口。

你说你的客户端正在连接到ws://192.168.178.21:2014,但它可能是服务器绑定到127.0.0.1或本地主机或你的主机名,因此没有看到请求?这可以解释为什么笔记本电脑收到了请求,而不是你的服务。

然后,你又说你在本地浏览器上试过了,而且成功了。您是否使用了相同的IP地址,还是使用了127.0.0.1或localhost?假设您使用相同的IP地址192.168.178.21,那么这将表明它不是我描述的绑定问题。

对不起,我现在只能想到这么多

一段时间后,我找到了解决方案:

必须将防火墙规则添加到公共防火墙选项中。

谢谢你的帮助