2016-03-17 3 views
0

Я разрабатываю приложение VoIP IOS с использованием протокола SIP. У меня есть собственная библиотека парсеров SIP, и я использую GCDAsyncUDPSocket для отправки данных на сервер.Не удается связаться с сервером SIP

Проблема в том, что я не могу связаться с сервером на двойном NAT с моим приложением. Я делаю PING, и сервер немедленно отвечает PONG, но когда я отправляю SIP-пакет, я даже не могу добраться до сервера.

Я пытаюсь связаться с сервером с другими клиентами, такими как Zoiper или Media5, и работает отлично. Поэтому я думаю, что я делаю что-то неправильно.

ответ

0

Убедитесь, что:

  • включают ваш частный IP: порт в контакте и через заголовки (не неправильный публичный адрес)
  • добавить атрибут rport на Via
  • убедитесь, что РЕЕСТР (является действительным SIP-сообщением)

Если все еще не работает, проверьте журналы сервера. Если все еще не работает или у вас нет доступа к журналам сервера, позвольте мне просмотреть ваше сообщение REGISTER.

+0

На самом деле я абсолютно уверен, что я включаю свой частный IP-адрес и порт, куда я отправляю, и когда я проверяю журнал сервера, порт изменился без причины (я думаю, модем делает это). Я включаю rport на Via, и я тестирую сообщение REGISTER, которое я получил от Zoiper. Все еще не работает – iGongora

+0

Многие маршрутизаторы/модемы имеют что-то вроде SIP-alg, которые стараются быть умными, но большую часть времени просто создают проблемы. В этом случае вы должны настроить ваш сервер, чтобы всегда соблюдать психический адрес (откуда было получено сообщение sip из сокета UDP) вместо адреса, представленного в сигнале sip. – Istvan

+0

Могу ли я показать вам одно из моих сообщений REGISTER? Я до сих пор не знаю, почему Zoiper работает, а у моего приложения нет. – iGongora