Qt - связывание QUdpSocket постоянно сбой
У меня есть эти 2 строки кода. Мне нужен сокет, который просто получает данные
Первый метод работает, и я получаю дату (из ip/port во втором методе)
Второй метод всегда возвращает false.
Я не понимаю разницу и не могу найти проблему.
У кого-нибудь есть идеи, как решить эту проблему или что я делаю не так?
udpSocket = new QUdpSocket();
bool result = udpSocket->bind(QHostAddress::Any, 7755);
QHostAddress address("the ip")
udpSocket = new QUdpSocket();
bool result = udpSocket->bind(address , 7755);
1 ответ
В первом методе, когда вы связываете сокет bind(QHostAddress::Any, 7755)
он будет прослушивать все интерфейсы в вашей системе; таким образом, он будет успешно связываться, зная, что хотя бы один интерфейс работает.
Во втором методе, когда вы устанавливаете IP-адрес с QHostAddress address("the ip")
Вы должны убедиться, что интерфейс с этим IP-адресом в вашей системе (используйте ipconfig
на Win / ifconfig
в Linux). Теперь конструктор автоматически определит из переданной строки ("IP-адрес"), является ли он IPv4 или IPv6. Если вы не указываете тип, вы можете построить адрес как Any
и привязать к нему свой сокет:
QString string("192.168.1.1");
QHostAddress address(QHostAddress::Any);
address.setAddress(string);
udpSocket = new QUdpSocket();
bool result = udpSocket->bind(address , 7755);