Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2019, 10:05   #1
Auratos
Пользователь
 
Регистрация: 01.06.2015
Сообщений: 20
По умолчанию Xamarin. Android. Организация доступа к сокет-серверу

Добрый день. Веду разработку в Xamarin Forms под Android. Пытаюсь поднять сокет-сервер на смартфоне. В качестве клиента выступает консольное приложение.
Адрес сервера(смартфона) я получаю следующим образом:

Код:
IPAddress[] adresses = Dns.GetHostAddresses(Dns.GetHostName());
if (adresses != null && adresses[0] != null)
{
      adr = adresses[0].ToString();
}
strendpoint = adr + ":2780";
IPEndPoint localEndPoint = CreateIPEndPoint(strendpoint);
_server = new TcpListenerServer(localEndPoint);
Затем захожу на 2ip.ru со смартфона, узнаю свой IP и вбиваю его в клиент:

Код:
const int port = 2780;
const string address = "85.26.233.137";
client = new TcpClient(address, port);
NetworkStream stream = client.GetStream();
Так вот. Клиент таки образом не может достучаться до сервера. Если подключаю смартфон к домашнему Wi-Fi (т.е. и сервер, и клиент теперь находятся в одной сети), и адрес у него становиться что-то вроде 192.168.0.105, то клиент по такому адресу может подключиться.
Заметил, что адрес, что выдает 2ip.ru, когда я работаю через оператора (Megafon), отличается от адреса, что указан в параметрах телефона в разделе "Об устройстве" - там он такой 100.99.225.236. Но по этому адресу клиент тоже не может достучаться. Подскажите, пожалуйста, как правильно организовать данную систему?
Auratos вне форума Ответить с цитированием
Старый 18.08.2019, 11:41   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Никак. Это серый ip. Заказывайте услугу статичного адреса у провайдера тогда и сможете установить связь. Либо организуйте сервер трансляции который с белым адресом который будет виден всем клиентам и через него передавайте пакеты клиентам.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 18.08.2019, 12:00   #3
Auratos
Пользователь
 
Регистрация: 01.06.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Никак. Это серый ip.
Вот, мы как раз собираемся для дальнейшей работы приобрести у оператора симку со статическим адресом. Но я не был уверен, что это поможет. А расскажите, пожалуйста, поподробнее: я считал, что статический (белый) адрес поможет только тем, что адрес станет постоянным. А на серые адреса еще какие-то ограничения накладываются оператором? Просто такой информации я не нашел в явном виде. Серый ip закрыт, получается, от внешнего мира?
Auratos вне форума Ответить с цитированием
Старый 18.08.2019, 12:03   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Серый это адрес nat маршрутизатора. Через него группа лиц может выходить с разных портов. Сам аппарат переодически обновляет порты . Чтобы этого не было нужно частенько отправлять пустой запрос. Где то статью видел как можно через удп организовать связь через nat. Но стоит ли это затрат ещё стоит подумать.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 18.08.2019, 12:21   #5
Auratos
Пользователь
 
Регистрация: 01.06.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Но стоит ли это затрат ещё стоит подумать.
Ну а возвращаясь к самой проблеме: тем способом, что я организую клиент и сервер, ничего не меняя в коде, с белым IP должно получиться?
Auratos вне форума Ответить с цитированием
Старый 18.08.2019, 12:24   #6
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

С белым все будет работать. Сам делал кучу проектов.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 18.08.2019, 12:27   #7
Auratos
Пользователь
 
Регистрация: 01.06.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
С белым все будет работать. Сам делал кучу проектов.
Спасибо большое, Вам, за разъяснение
Auratos вне форума Ответить с цитированием
Старый 26.08.2019, 15:56   #8
Auratos
Пользователь
 
Регистрация: 01.06.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
С белым все будет работать. Сам делал кучу проектов.
Добрый день. Я вам продублировал это сообщение на ваш email. Извините, пожалуйста, если вы его там уже прочитали Просто мне максимально быстро нужно решить задачу, которая пока для меня неразрешима. Может быть вы что-то сможете подсказать.
Мы на Мегафоне подключили эту опции для одной из SIM-карт - тариф "Интернет вещей", использующий какую-то современную технологию передачи данных. Все порты, насколько я понял, открыты.
Но мне так и не удалось связать клиента с сервером, запущенном на смартфоне.
Вы сказали, что сделали уже кучу проектов. Подскажите, пожалуйста, хотя бы в какую сторону копать? Пока только вы мне хоть что-то ответили.
Просто нам при оформлении тарифа предоставили точку доступа VPN11.VOLGA.
Я нашел в смартфоне, как создать точку доступа APN. Забил следующие данные:
имя - megafon
APN - VPN11.VOLGA
логин - gdata
пароль - gdata
Смартфон получил указанный оператором IP адрес (контрольный) - 172.16.110.48.
Я в своем мобильном приложении получаю данный IP и запускаю сервер:

IPAddress[] adresses = Dns.GetHostAddresses(Dns.GetHostNam e());
string adr = adresses[0].ToString();
string strendpoint = adr + ":2780"; // точка доступа 172.16.11.48:2780
IPEndPoint localEndPoint = CreateIPEndPoint(strendpoint);
TcpListenerServer server = new TcpListenerServer( localEndPoint);

А клиент (отдельное устройство) через другую SIM-карту (с серым IP) пытается подключиться по адресу 172.16.11.48:2780. Но ничего не выходит. Может быть как-то иначе надо сервер запускать? Или при настройке точки доступа APN что-то еще указать?
Помогите, пожалуйста, советом или хотя бы намеком, какую информацию нужно искать?
Auratos вне форума Ответить с цитированием
Старый 26.08.2019, 16:20   #9
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Auratos Посмотреть сообщение
Добрый день. Я вам продублировал это сообщение на ваш email.
Почему то в спам попали. Пишите в скайп там удобнее обсуждать.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 26.08.2019, 17:28   #10
Auratos
Пользователь
 
Регистрация: 01.06.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Почему то в спам попали. Пишите в скайп там удобнее обсуждать.
Не могу почему-то найти вас там, чтобы добавить в контакты. Может быть у Вас получится меня добавить - логин auratos.
123.jpg
Auratos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение из Xamarin к MySql - Xamarin valter1999 C# (си шарп) 3 05.04.2018 10:06
Xamarin android cyber_NINJA C# (си шарп) 1 05.04.2015 17:20
Организация запроса к серверу DBPorgrammer C/C++ Сетевое программирование 0 21.01.2013 09:19
Как заставить клиентский сокет заново подключится к серверу Vadik(R) Работа с сетью в Delphi 6 01.11.2008 14:30