2012-10-11 4 views
2

QTcpSocket을 사용하여 네트워크를 통해 데이터를 보내고 readyRead 신호를 데이터 처리기와 연결하십시오. 그러나 readyRead 신호가 트리거되지 않았을 수 있습니다.QTcpSocket의 readyRead 신호를 수신 할 수 없습니까?

Wireshark로 도착한 데이터를 볼 수는 있지만 QTcpSocket은 readyRead 신호를 트리거하지 않습니다.

+0

정상적으로 readyRead 신호를 트리거해야합니다. 수신기 쪽을 확인하십시오. –

+0

connect()에 오타가 없는지 확인하십시오 ... Qt Creator를 사용하여 SIGNAL 및 SLOT을 자동 완성하거나 콘솔 연결 실패 및/또는 connect() 반환 값 확인에 대한 경고가 있는지 확인하십시오. 또한 이벤트 루프가 정상적으로 실행되고 있는지 확인하십시오 (차단 메소드를 호출하지 않음). – hyde

+0

동일하거나 유사한 문제가 있습니다. Win7 x64, Qt 5.1. Wireshark는 메시지가 도착했음을 보여 주지만 모든 4-10 개의 메시지 중 하나만 readyRead()를 트리거합니다. 그것은 나를 곤란하게 만들었습니다. – MayaPosch

답변

-1

스레드를 생성 한 스레드가 readyRead 신호가 트리거되지 않도록 자체 이벤트 루프를 입력하는 모달 대화 상자에있는 경우 발생할 수 있습니다.

나는 2 개의 해결책을 제안한다 :
1) 비 모달 대화 상자를 사용하여 다이얼로그 결과에 신호를 제공한다.
2) 다른 스레드 내에 소켓을 생성하십시오.

+0

정상적인 모달 대화 상자는 이벤트 처리를 차단하지 않으므로 Qt가 처리합니다. – hyde