Способы прослушивания UDP-порта с помощью Mozilla Firefox - PullRequest
0 голосов
/ 20 сентября 2011

Короче говоря, я пытаюсь написать компонент C ++ XPCOM, который прослушивает порт UDP и вызывает функцию обратного вызова (функцию javascript) каждый раз, когда приходит пакет UDP.

Извините, если ответ слишком очевиден, но мне было интересно, как можно прослушивать UDP-порт с помощью Mozilla (желательно что-то простое)?

Я знаю, что есть интерфейс, называемый nsIServerSocket, который позволяет подключать к нему некоторых слушателей, но это только для открытия портов TCP.Есть ли какой-нибудь UDP-эквивалент этого (где я могу подключить прослушиватель, который уведомляется каждый раз, когда приходит UDP-пакет)?

Я также знаю, что, возможно, мог бы использовать PR_OpenUDPSocket и тому подобное.Есть ли способ использовать это, не имея дело с потоками?(Насколько я понимаю, я должен вернуться к вызывающей функции javascript после открытия порта).

Спасибо.

1 Ответ

1 голос
/ 20 сентября 2011

Зачем вам ограничивать себя API Mozilla, если вы пишете код на C ++?Вы можете напрямую использовать API сокетов POSIX, см. Как настроить сокет Winsock UDP? для примера WinSock (единственное отличие для Linux и OS X должно заключаться в том, что вызов WSAStartup() не нужен).nsIServerSocket в основном полезен для кода JavaScript, который не имеет возможности напрямую использовать системные библиотеки.

Если вы предпочитаете прямой ответ на свой вопрос: нет, API-интерфейс XPCOM для создания сокетов UDP отсутствует,Вы уже нашли NSPR API (PR_OpenUDPSocket()), но, вероятно, он разработан с учетом взаимодействия с DNS, поскольку это практически единственная связь UDP, которую может выполнять браузер.Не ожидайте многого здесь.

И примечание: вы можете избежать двоичных компонентов XPCOM и создать собственную библиотеку, которую можно вызывать через js-ctypes . Подробнее см. Здесь .

...