Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Соединение сокетов на одном компе и при удаленном соединении

5.1K
28 марта 2010 года
Karrde
88 / / 15.10.2007
Выскочила интересная проблема. Создаю серверный сокет
 
Код:
IPHostEntry^ ipHostInfo = Dns::Resolve(server);
System::Net::IPAddress^ ipAddress = ipHostInfo->AddressList[0];//Узнаем IP-адрес
IPEndPoint^ endPoint = gcnew IPEndPoint(ipAddress, port);
_durakSocket = gcnew Socket(endPoint->AddressFamily, SocketType::Stream,ProtocolType::Tcp);//инициализируем сокет

В том случае, если создавать сокет первым IP-адресом из списка
System::Net::IPAddress^ ipAddress = ipHostInfo->AddressList[0];
то спокойно могут подключаться клиенты из локалки, но при попытке создать такой же клиент на том же компьютере, где находится сервак, клиент не видит созданного сервера.

Если инициализировать сокет IP-адресом 127.0.0.1
получается обратная ситуация-клиенты на том же компе видят сервер, клиенты с других компов-не видят.
Мне же желательно, чтобы могли подключаться отовсюду.
В чем загвоздка?
253
28 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: Karrde

Если инициализировать сокет IP-адресом 127.0.0.1
получается обратная ситуация-клиенты на том же компе видят сервер, клиенты с других компов-не видят.


Это адрес обратной петли, который привязан только к локальной машине. Он может работать вообще без наличия сетевой карты. Соответственно, он не имеет к реальной сети никакого отношения.

Цитата: Karrde

В том случае, если создавать сокет первым IP-адресом из списка
System::Net::IPAddress^ ipAddress = ipHostInfo->AddressList[0];
то спокойно могут подключаться клиенты из локалки, но при попытке создать такой же клиент на том же компьютере, где находится сервак, клиент не видит созданного сервера.


Ты используешь 127.0.0.1 для клиентов? Или AddressList[0]? Если первое - то ничего удивительного, адреса-то разные, пусть и привязаны к одной машине.

5.1K
28 марта 2010 года
Karrde
88 / / 15.10.2007
Я использую AddressList[0]. Но тогда не может подключаться клиент, находящийся на одном компе с серваком.
253
28 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: Karrde
Я использую AddressList[0]. Но тогда не может подключаться клиент, находящийся на одном компе с серваком.


Перечитай моё сообщение выше...
Используй и для сервера, и для клиентов всегда адрес интерфейса, а не обратной петли.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог