Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164

Сокеты не соединяются

14.01.2017, 23:42. Показов 876. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, форумчане, вопрос, наверное очень простой и легкий, и мне нужно было бы использовать поиск, но я не понимаю, какие ключевые слова для этого использовать.

В локальной сети три компьютера, общаются друг с другом по Tcp/IP протоколу.
На одной машине сервер, на других - по клиенту. У меня есть приложение на WinSock2 C++, которое работает без перебоев, но теперь мне нужно пересесть на С#, пишу тестовое приложение на Unity, чтобы проверить работоспособность.

Серверная часть работает.
C#
1
2
3
4
5
6
IPAddress ipAddress = IPAddress.Parse("127.0.0.1"); //создаем сервер на текущей машине
serverEndPoint = new IPEndPoint(ipAddress, 50014);
listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 
listener.Bind(serverEndPoint);
listener.Listen(100);
В клиентах: Запрашиваю IP адрес сервера по имени хоста. Допустим, имя хоста = "HostName".
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//UnityEngine Start() method:
client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
endPoint = new IPEndPoint( IPAddress.Parse("169.***.**.***"), 50014 ); //проблема в этой строке (звездочками замазал сам)
 
while (!bConnected) {
    IAsyncResult result;
    bool succeess = false;
 
    try {
        result = client.BeginConnect(endPoint, null, null);
        succeess = result.AsyncWaitHandle.WaitOne(5000, true);
        client.EndConnect(result);
 
        if (succeess) {
            client.Close(); //пока для теста важен только сам факт подключения, сразу закрываем сокет
 
            bConnected = true;
            Debug.Log("Connected");
        }
    } catch (Exception e) {
        if (e.GetType().Name == "SocketException") {
            Debug.Log("No such server");
        }
    }
}
Если на клиенте я указываю IP "127.0.0.1", если тестировать на одной машине, все работает хорошо, они друг к другу подсоединяются. Если я переношу клиент на другу машину, меняю IP в методе IPAddress.Parse() на IP сервера, то соединения не происходит.

Я слаб в TCP/IP, и не имею опыта разработки на сокетах .NET, есть ли какие-нибудь различия или подводные камни при установления связи между машинами.
Условия:
Компьютеры находятся в локальной сети - есть доступ через проводник по сетевому пути "\\client\d" на D:\ диск.
Другое приложение работает абсолютно так же и использует этот IP для подключения к серверу, почему оно работает, а .NET приложение - нет?

Спасибо за любую идею или наводку.

Добавлено через 1 час 25 минут
Два дня сидел, не мог решить проблему, создал топик - сразу решение нашло меня само.

На сервере, вместо IPAddress.Parse(), использую IPAddress.Any.
Цитата из MSDN все объясняет.
Предоставляет IP-адрес, который указывает, что сервер должен контролировать действия клиента во всех сетевых интерфейсах. Это поле доступно только для чтения.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2017, 23:42
Ответы с готовыми решениями:

Не соединяются точки графика
НЕ соединяются точки графика. не понимаю почему, тип линия.

Не соединяются точки графика
Не соединяются точки графика

JFreeChart соединяются не нужные точки
Хочу нарисовать график в котором одному значению X может соответствовать несколько значений Y. Должна получиться часть эллипса , а часть...

3
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
16.01.2017, 18:36
Цитата Сообщение от igor_petrov Посмотреть сообщение
В локальной сети три компьютера
Если сеть локальная, то адреса должны начинаться на 192.168
1
 Аватар для igor_petrov
18 / 8 / 4
Регистрация: 26.01.2014
Сообщений: 164
16.01.2017, 20:58  [ТС]
ViterAlex, это правило спецификации? А если клиент подсоединился к серверу и сервер смотрит его IP, и он не начинается на эти два числа, значит, клиент подсоединился не по локалке?
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
16.01.2017, 21:08
Если сервер слушает соединение по определённому адресу, то клиент должен по этому адресу и порту подключаться.
127 — это сам компьютер, по этому адресу нельзя обратиться извне. Если сервер слушает адрес на 127, то соединиться с ним смогут только программы на этом же компьютере, что у тебя и получается.
Цитата Сообщение от igor_petrov Посмотреть сообщение
Если на клиенте я указываю IP "127.0.0.1", если тестировать на одной машине, все работает хорошо, они друг к другу подсоединяются.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2017, 21:08
Помогаю со студенческими работами здесь

Элементы электрической цепи не соединяются
Здравствуйте. Недавно начал осваивать Matlab Simulink. Мне нужно составить схему по примеру: Пытаюсь собрать схему, но элементы...

Два компьютера в сети не соединяются
Вобщим сделал кроссовер кабель, пытаюсь соединить два компьютера с двумя сетевыми картами. Все вроде правильно- на одном компе адрес...

Php сокеты и unix-сокеты
Здравствуйте, есть программа, написанная на С под Linux. При её работе в памяти хранятся несколько массивов, которые необходимо обработать...

Большинство онлайн игр не соединяются с интернетом
NFS: World - в лаунчере авторизация проходит успешно, но обновление не грузит (повисает на 1-2 мб из сколько-то). Аллоды Онлайн -...

Два компа с Windows 8.1 и 10 не соединяются в группе
Два компа 8.1 и 10 все сети переключил на частные. Далее на восьмере создал домашнюю группу, десятка увидела ее, ввел пароль но при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru