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

时间:2014-08-10 12:33:21

标签: c# javascript networking websocket local

在本地网络中使用websocket-connection时出现问题。

情境:

对于我的笔记本电脑(Win7)我写了一个服务,打开一个websocket-server到端口2014.因为默认情况下没有为windows 7启用websockets我使用的是超级插件库(http://www.supersocket.net/) 。

对于客户端我已经编写了一个带有sencha touch和Phonegap的Android应用程序。为版本低于4.4的Android设备启用websocket支持我已经集成了phonegap websocket-pugin。

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

问题:

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

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

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

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

所以我在Android设备上测试了websocket-support:将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://协议 - 没有胜利。

再也没有任何想法了。很乐意得到一些帮助:)

2 个答案:

答案 0 :(得分:1)

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

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

感谢您的帮助:)

答案 1 :(得分:1)

  

所以似乎数据包到达我的笔记本电脑而不是服务。

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

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

然后再说一遍,你说你是从本地浏览器尝试过的,它确实有效。您使用的是同一个IP地址,还是使用了127.0.0.1或localhost?假设您使用了相同的IP地址192.168.178.21,那么这表明它不是我描述的绑定问题。

对不起,这就是我现在所能想到的。