Я разрабатываю приложение VoIP IOS с использованием протокола SIP. У меня есть собственная библиотека парсеров SIP, и я использую GCDAsyncUDPSocket для отправки данных на сервер.Не удается связаться с сервером SIP
Проблема в том, что я не могу связаться с сервером на двойном NAT с моим приложением. Я делаю PING, и сервер немедленно отвечает PONG, но когда я отправляю SIP-пакет, я даже не могу добраться до сервера.
Я пытаюсь связаться с сервером с другими клиентами, такими как Zoiper или Media5, и работает отлично. Поэтому я думаю, что я делаю что-то неправильно.
На самом деле я абсолютно уверен, что я включаю свой частный IP-адрес и порт, куда я отправляю, и когда я проверяю журнал сервера, порт изменился без причины (я думаю, модем делает это). Я включаю rport на Via, и я тестирую сообщение REGISTER, которое я получил от Zoiper. Все еще не работает – iGongora
Многие маршрутизаторы/модемы имеют что-то вроде SIP-alg, которые стараются быть умными, но большую часть времени просто создают проблемы. В этом случае вы должны настроить ваш сервер, чтобы всегда соблюдать психический адрес (откуда было получено сообщение sip из сокета UDP) вместо адреса, представленного в сигнале sip. – Istvan
Могу ли я показать вам одно из моих сообщений REGISTER? Я до сих пор не знаю, почему Zoiper работает, а у моего приложения нет. – iGongora