Прослушивание порта в c # (не TCP-порт) - PullRequest
1 голос
/ 10 ноября 2011

Моя ситуация: у меня есть xspeech для voip, когда происходит какое-либо действие с телефоном, сообщения (пакеты) отправляются в интерфейс xspeech.И из этого интерфейса журналы этих действий отправляются на определенный IP-адрес, который является моим IP-адресом.А также эти журналы отправляются с определенного порта.

Я пытаюсь разработать приложение, которое читает эти журналы (не файл).Я пробовал TCPListener и TCPClient, они работали, но не в моей ситуации.Я думал, что эти журналы не отправляются с порта TCP.Это проблема.

Ответы [ 3 ]

1 голос
/ 10 ноября 2011

SIP использует UDP по умолчанию.

Это не так просто, как возможность принимать пакеты из одной конечной точки, регистрировать их и затем отправлять в реальное место назначения.Вы сломаете такие вещи, как обработка NAT, если вы это сделаете.

Вы должны действовать как полный SIP-прокси (с состоянием) или как B2BUA.

Самый простой способ - загрузить существующий sip-прокси и просто сделать его журналом в файле и читатьэтот файл.

1 голос
/ 10 ноября 2011

Из вашего поста я подозреваю, что он использует UDP ... это будет означать, что вам нужно использовать UDPClient класс для получения и обработки ...

В зависимости от того, предлагают ли они TAPI-провайдера, вы можете использовать:

Возможно, потребуется создать прокси-сервер SIP (это может сгенерировать, например, «Событие Pickup»):

РЕДАКТИРОВАТЬ - согласно комментариям другие возможности:

Если то, что вы пытаетесь перехватить, отправляется как сообщение системного журнала, тогда смотрите http://michael.chanceyjr.com/useful-code/syslogd-class-for-sending-and-receiving-syslogd-events/.

Другой возможностью является SNMP - для этого см. http://www.snmpsharpnet.com/

0 голосов
/ 10 ноября 2011

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

...