먼저 .. 연결이 수립 된 후
socket = new QUdpSocket();
connect(socket, SIGNAL(readyRead()), this, SLOT(onReadyRead()), Qt::DirectConnection);
socket->bind(QHostAddress::LocalHost, 53, QUdpSocket::ShareAddress);
은 나중에, 나는 :: QUdpSocket 중 하나를 호출 * 방법을 쓰고 싶어하지만 작동하지 않습니다 QHostAddress::Lockhost
에 바인딩 하시겠습니까? 이것이 공용 네트워크에서 보이지 않는다는 것을 알고 있습니까? 같은 물리적 상자에있는 응용 프로그램에서만 볼 수 있습니다.
둘째, QUdpSocket::bind
호출에서 반환 매개 변수를 확인하지 않으므로 실제로 바인드 호출이 성공했는지 여부를 알 수 없습니다.
셋째, QUdpSocket::ShareAddress
힌트없이 시도해 보셨습니까? Qt documentation for BindMode enum는 비밀스럽게 ShareAddress
에 대한 상태 : 그러나
, 어떤 서비스가 바인딩 할 수 때문에,이 옵션은 특정 보안 고려 될 수 있습니다.
이러한 보안 고려 사항은 무엇인지 모르겠지만 시도해 볼 항목 중 하나는 코드를 단순화하는 것입니다.
마지막으로 문제는 onReadyRead()
슬롯 내부의 코드입니까? 해당 코드를 게시하면 문제를 진단하는 데 도움이 될 수 있습니다.
예,이 경우 LocalHost에 바인딩하는 것이 좋습니다. 붙여 넣은 코드는 문제를 재현 할 수있는 코드의 최단 거리이므로 오류 검사는 포함되지 않았습니다. 나는 그 정보를 미래에 포함시킬 것이다. 이전에 물어 본 다른 질문에서 사용한 것과 같은 방법으로 상황을 해결할 수있었습니다. http://stackoverflow.com/questions/1392494/qt4-dns-proxy-qudpsocket 감사합니다. – Michael