Russian Qt Forum
Апрель 19, 2024, 01:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTcpSocket. Хост найден, но далее возникает ошибка NetworkError. Решено.  (Прочитано 6112 раз)
mohax
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« : Октябрь 30, 2021, 09:11 »

Доброго дня!
Пытаюсь подсоединиться к прибору, на котором стоит адаптер MOXA, работающий в режиме TCP Server. Естественно, на компе есть подсеть, в которую входит этот прибор.
Задействовал сигналы
Код:
   
    connect(socket, &QTcpSocket::readyRead, this, &ProtectWindow::socketReadySlot);
    connect(socket, &QTcpSocket::disconnected, this, &ProtectWindow::socketDisconnectSlot);
    connect(socket, &QTcpSocket::hostFound, this, &ProtectWindow::hostFoundSlot);
    connect(socket, &QTcpSocket::connected, this, &ProtectWindow::connectedSlot);
    connect(socket, &QTcpSocket::stateChanged, this, &ProtectWindow::stateChangedSlot);

Пытаюсь соединиться с хостом
Код:
socket->connectToHost(ipaddress, ipport);

В дебаге вывожу и получаю такие сообщения:
Цитировать
QAbstractSocket::HostLookupState
QAbstractSocket::ConnectingState
host found
QAbstractSocket::UnconnectedState
socket error:  "Error: An error occurred with the network (e.g., the network cable was accidentally plugged out)."

Я новичок в работе с  TCP. Не понимаю,почему компонент QTcpSocket не может соединиться с хостом?
С компа прибор с тем айпи адресом пингуется норм.
« Последнее редактирование: Ноябрь 01, 2021, 07:27 от mohax » Записан
tux
Крякер
****
Offline Offline

Сообщений: 399



Просмотр профиля
« Ответ #1 : Октябрь 30, 2021, 10:58 »

Пингуется - не означает, что остальные порты открыты. Я бы посмотрел сначала. Хотя бы с помощью nmap.
Записан

mohax
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #2 : Октябрь 30, 2021, 11:59 »

Пингуется - не означает, что остальные порты открыты. Я бы посмотрел сначала. Хотя бы с помощью nmap.
другой программой,написанной не на Qt, нормально происходит соединение с прибором
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #3 : Октябрь 30, 2021, 13:18 »

Номер порта проверьте
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
tux
Крякер
****
Offline Offline

Сообщений: 399



Просмотр профиля
« Ответ #4 : Октябрь 30, 2021, 22:49 »

Есть ещё такое понятие, как "привилигированный порт". Это порты от 0 до 1023. Формально, только рут должен их использовать. Как вариант, ваша "другая программа" щапускается от рута и прекрасно работает. Просто предположение.
Назвали бы, хотя бы номер порта.
Записан

mohax
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #5 : Ноябрь 01, 2021, 07:27 »

Короче, ответ был неожиданно найден,и он вверг в меня удивление и ступор со словами "какого органа...".
Есть функция
Код:
socket->connectToHost(ipStr, ipport);
.

Если стринговая ipStr представлена в виде айпи адреса "192.168.127.012", то не происходит соединение, а если представить в виде "192.168.127.12", то все нормально, все работает, есть коннект. Далее узнал еще более интересные вещи, когда попытался применить класс QHostAddress, создавая его экземпляр QHostAddress("192.168.127.012"), и видя, как айпи адрес вдруг превращается в "192.168.127.10". Вот вопрос ко всем, почему цифры с начальным нулем функции,работающие с сетью,воспринимают как будто это записано в восьмеричной системе исчисления??? Что интересно,если я записываю адрес "192.168.127.090", то вообще полный крах происходит.
« Последнее редактирование: Ноябрь 01, 2021, 07:30 от mohax » Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 870


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #6 : Ноябрь 01, 2021, 09:41 »

Если не ошибаюсь, октеты в ip-адресе могут быть записаны в любой системе исчисления, хоть в двоичной.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.