Russian Qt Forum

Qt => Работа с сетью => Тема начата: crashsp от Январь 06, 2011, 18:48



Название: QTcpServer за NAT
Отправлено: crashsp от Январь 06, 2011, 18:48
Пишу клиент/сервер все окей  если сервер имеет белый  ip,  но 
каким образом можно установить прямое соединения при условиях что сам QTcpServer спрятан за NAT ??
Кто нить реализовывал что нить подобное, с чего начать действовать )??
Благодарю....


Название: Re: QTcpServer за NAT
Отправлено: brankovic от Январь 06, 2011, 20:05
Можно пробросить порт на нат.

Если к нату доступа нет, то можно сделать обратный коннект с сервера на клиент, если клиент сам имеет внешний ip или проброшенный порт на своём нате.

Если и клиент и сервер находятся оба за натом, то связаться можно только через прокси.

Это всё свойства tcp/udp, QTcpServer тут не виноват но и не поможет ничем.


Название: Re: QTcpServer за NAT
Отправлено: crashsp от Январь 07, 2011, 21:01
Спасиб !


Название: Re: QTcpServer за NAT
Отправлено: Ubuntu_linux от Январь 09, 2011, 02:49
Можно пробросить порт на нат.

Если к нату доступа нет, то можно сделать обратный коннект с сервера на клиент, если клиент сам имеет внешний ip или проброшенный порт на своём нате.

Если и клиент и сервер находятся оба за натом, то связаться можно только через прокси.

Это всё свойства tcp/udp, QTcpServer тут не виноват но и не поможет ничем.
Класная идея, обратного конекта! Могу подкинуть свою идейку . Я для передачи адресов клиенту или серверу, что б они знали друг друга, использую  месенджер джабер, а потом прямой коннект  по ип.


Название: Re: QTcpServer за NAT
Отправлено: crashsp от Январь 10, 2011, 20:12
Было бы великолепно который день рыщу про STUN сервера и про RTP протокол потом ковырял qxmpp на самом деле вы меня воодушевили этой идеей прочел вот  это  (http://www.prog.org.ru/topic_16284_0.html) и    это  (http://www.prog.org.ru/index.php?topic=16258.msg108166#msg108166)
С использованием Qxmpp(QxxmpCallManeger) у меня не получилось передать аудио за NAT если оба собеседника находятся за ним да и по моему разработчики этого и не обещали и не обещают в новой версии))  посему начал придумывать свои решения и пока что окончательно не решил с чего начать  реализацию так что ваш алгоритм будет весьма кстати!!!

Благодарю...




Название: Re: QTcpServer за NAT
Отправлено: serg_hd от Январь 10, 2011, 23:02
Вообще, тема обхода NAT сегодня, как я понял, одна из наиболее востребованной. Помнится как-то искал как его обойти, чтоб 2 юзера (за роутерами) могли обмениваться трафиком без участия сервера, как это делает TeamViewer к примеру, но ни инфы адекватной не нашёл, да и вообще глухо было. И по сей день интересует, что ж оно так сложно-то.


Название: Re: QTcpServer за NAT
Отправлено: brankovic от Январь 11, 2011, 00:23
Есть такая штука

http://en.wikipedia.org/wiki/UDP_hole_punching

на основе которой работает hamachi и прочие. Идея в том, что есть некий эхо-сервер, на который желающие сконнектиться посылают запрос, тогда этот сервер просто сообщает им порты (и ip) с которых они на него коннектнулись, и клиенты начинают писать друг-другу. Расчёт на то, что нат кеширует эти порты (иначе бы юдп не работал), но при этом не смотрит от кого входящие пакеты. Расчёт не всегда верен, поэтому работает не всегда.

Ещё на эту тему есть некий Gbirdge (http://www.gbridge.com/) от гугла. Он примерно так же работает и бесплатен. Но сам я не пользовался, руки не дошли.


Название: Re: QTcpServer за NAT
Отправлено: paul_winex от Октябрь 25, 2013, 10:49
Вопрос: кто-нибудь решил задачу обхода NAT? Оба клиента находят за роутером. И даже если бы бы, клиенты не смогут самостоятельно его настроить. Нужен вариант "Включил и работает".


Название: Re: QTcpServer за NAT
Отправлено: mutineer от Октябрь 25, 2013, 11:13
внешний сервер


Название: Re: QTcpServer за NAT
Отправлено: Serr500 от Октябрь 25, 2013, 11:30
UPnP, но работать будет только если включена поддержка хотя бы на одном роутере. Если нет - только внешний сервер. Или IPv6, где NAT'а нет в принципе.