用mozilla firefox监听UDP端口的方法

时间:2011-09-20 14:18:41

标签: sockets firefox udp xpcom

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

很抱歉,如果答案太明显了,但我想知道用Mozilla监听UDP端口的方式是什么(最好是容易做到的事情)?

我知道有一个名为nsIServerSocket的接口允许一些侦听器连接到它,但这仅用于打开TCP端口。是否有任何相当的UDP(我可以附加一个每次UDP数据包到达时通知的监听器)?

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

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

还有一个注意事项:您可能希望避免使用二进制XPCOM组件并创建可以通过js-ctypes调用的本机库。 See here for the details