Название: QTcpSocket. Хост найден, но далее возникает ошибка NetworkError. Решено. Отправлено: mohax от Октябрь 30, 2021, 09:11 Доброго дня!
Пытаюсь подсоединиться к прибору, на котором стоит адаптер MOXA, работающий в режиме TCP Server. Естественно, на компе есть подсеть, в которую входит этот прибор. Задействовал сигналы Код:
Пытаюсь соединиться с хостом Код: 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 не может соединиться с хостом? С компа прибор с тем айпи адресом пингуется норм. Название: Re: QTcpSocket. Хост найден, но далее возникает ошибка NetworkError Отправлено: tux от Октябрь 30, 2021, 10:58 Пингуется - не означает, что остальные порты открыты. Я бы посмотрел сначала. Хотя бы с помощью nmap.
Название: Re: QTcpSocket. Хост найден, но далее возникает ошибка NetworkError Отправлено: mohax от Октябрь 30, 2021, 11:59 Пингуется - не означает, что остальные порты открыты. Я бы посмотрел сначала. Хотя бы с помощью nmap. другой программой,написанной не на Qt, нормально происходит соединение с приборомНазвание: Re: QTcpSocket. Хост найден, но далее возникает ошибка NetworkError Отправлено: sergek от Октябрь 30, 2021, 13:18 Номер порта проверьте
Название: Re: QTcpSocket. Хост найден, но далее возникает ошибка NetworkError Отправлено: tux от Октябрь 30, 2021, 22:49 Есть ещё такое понятие, как "привилигированный порт". Это порты от 0 до 1023. Формально, только рут должен их использовать. Как вариант, ваша "другая программа" щапускается от рута и прекрасно работает. Просто предположение.
Назвали бы, хотя бы номер порта. Название: Re: QTcpSocket. Хост найден, но далее возникает ошибка NetworkError Отправлено: mohax от Ноябрь 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", то вообще полный крах происходит. Название: Re: QTcpSocket. Хост найден, но далее возникает ошибка NetworkError. Решено. Отправлено: sergek от Ноябрь 01, 2021, 09:41 Если не ошибаюсь, октеты в ip-адресе могут быть записаны в любой системе исчисления, хоть в двоичной.
|