使用 mozilla firefox 监听 UDP 端口的方法

Posted

技术标签:

【中文标题】使用 mozilla firefox 监听 UDP 端口的方法【英文标题】:Ways to listen a UDP port with mozilla firefox 【发布时间】:2011-09-20 14:18:41 【问题描述】:

简而言之,我正在尝试编写一个 C++ XPCOM 组件,该组件侦听 UDP 端口并在每次 UDP 数据包到达时调用回调函数(javascript 函数)。

对不起,如果答案太明显了,但我想知道用 Mozilla 监听 UDP 端口的方法是什么(最好是容易做到的)?

我知道有一个叫做 nsIServerSocket 的接口允许一些监听器附加到它上面,但这只是为了打开 TCP 端口。是否有任何与此等效的 UDP(我可以在其中附加一个侦听器,每次 UDP 数据包到达时都会通知该侦听器)?

我也知道我可能会使用 PR_OpenUDPSocket 等。有没有办法在不处理线程的情况下使用它? (据我了解,我必须在打开端口后返回调用 javascript 函数)。

谢谢。

【问题讨论】:

【参考方案1】:

如果您正在编写 C++ 代码,为什么需要限制自己使用 Mozilla 的 API?您可以直接使用 POSIX 套接字 API,请参阅 How to set up a Winsock UDP socket? 获取 WinSock 示例(Linux 和 OS X 的唯一区别应该是 WSAStartup() 调用是不必要的)。 nsIServerSocket 主要用于无法直接使用系统库的 JavaScript 代码。

如果您希望直接回答您的问题:不,没有用于创建 UDP 套接字的 XPCOM API。您已经找到了 NSPR API (PR_OpenUDPSocket()),但它可能在设计时考虑了 DNS 通信,因为这几乎是浏览器唯一可以进行的 UDP 通信。不要期望太多。

附带说明:您可能希望避免使用二进制 XPCOM 组件并创建一个可以通过 js-ctypes 调用的本机库。 See here for the details.

【讨论】:

好吧,我只是认为如果我使用 Mozilla 的 API,可移植性就不会成为问题。感谢您的回答。 @aki:如今,可移植性通常是一个小得多的问题 - 在创建 NSPR 时它是一个大问题。

以上是关于使用 mozilla firefox 监听 UDP 端口的方法的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C++ 启动 Mozilla Firefox?

firefox coap安装使用

永别了 Firefox OS!Mozilla 宣布解散 Firefox OS 幕后团队

Mozilla 将 Firefox 57 浏览器 Firefox Quantum版发布

Mozilla 宣布 Firefox 49 将修改根证书处理过程

Firefox 或将很快提供 iOS 版本Firefox 要称霸所有平台?