javascript - Chrome UDP套接字未从远程计算机接收

标签 javascript sockets google-chrome udp google-chrome-app

我正在开发一个包含以下代码的 Google Chrome 应用:

var socket = chrome.sockets.udp;
var PORT = 5005;
var HOST = '127.0.0.1';

socket.create({}, function(sockInfo){
    socket.bind(sockInfo.socketId, HOST, PORT, function(result){
        socket.onReceive.addListener(function(info){
            // do stuff with the packet data
        });
    });
});

当我从本地主机循环发送数据时,这种机制运行得非常好。但是,当我尝试从远程计算机发送时,onReceive.addListener 回调函数永远不会被调用。起初我认为这可能是本地网络问题,但是当我 tcpdump -vv udp port 5005 时,它读取了我正在发送的数据,所以我知道它正在到达我的机器。这让我相信这是一个 Chrome 问题......在我的 manifest.json 文件中,我已经为 UDP 设置了通用“绑定(bind)”和“发送”权限,所以我不明白为什么这不起作用。有什么想法吗?

最佳答案

弗朗索瓦·博福特现已删除的答案提供了一个有用的建议,遗憾的是以一种更适合评论的方式。我将其设为社区维基,这样他就不会感到声誉被剥夺。

HOST 部分指示您正在监听哪个接口(interface)以获取数据。将其设置为 127.0.0.1 意味着您仅监听环回接口(interface),无法从外部访问该接口(interface)。

您可以提供您拥有的网络接口(interface)的显式 IP 地址,但更简单的解决方案是说“我想监听所有这些”。

引自the docs :

Use "0.0.0.0" to accept packets from all local available network interfaces.

这应该可以解决你的情况;一般来说,还需要检查防火墙是否允许请求通过;你已经做到了。

关于javascript - Chrome UDP套接字未从远程计算机接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30896044/

相关文章:

google-chrome - 我可以使用 chrome.devtools API 访问 JavaScript 片段吗?

google-chrome - Chrome 谷歌字体渲染

css - 网页未在 Google Chrome 中加载

Javascript map 函数

javascript - 我如何解构一个对象

javascript - 如何隐藏 div 直到某个字段值大于零

具有两个 NIC 的计算机上的 Java 服务器

javascript - Ember,如何为 "partial"和 "index"重用相同的 "show"

c - linux C 服务器 - 识别/命名客户端

C raw sockets 数据包看起来不错但没有逃脱网络