2016-06-04 1 views
0

QUDPsocket을 사용하여 메시지를 보냅니다. 그리고 나는 연결한다 : connect (socket, SIGNAL (ReadyRead()), this, SLOT (processPendingDatagrams()));Qt UDPsocket readyread() SIGNAL이 두 번 출력됩니다.

main에서 sendmessage ("123")를 호출하면 processPendingDatagrams()가 한 번만 실행됩니다.

하지만 버튼 클릭 이벤트에서 sendmessage ("123")를 호출하면 두 번 실행됩니다. 문제를 해결하는 방법?

sendMessage 첨부() :

소켓 -> writeDatagram (데이터, data.length입니다(), QHostAddress :: 방송, 포트);

+0

동일한 애플리케이션으로 송수신 하시겠습니까? – Mike

+0

아니요, 소켓 클래스로 수신합니다. – YOUNG

답변

0

서버가 클라이언트의 기능에 따라 한 두 번 알아 차리는 경우 클라이언트의 잘못입니다. 당신의 클릭 이벤트에서

, 같은 추가

qDebug() << "Click event, sending message..."; 

당신은 아마 아래 클릭에 두 번 보낸 것 알 수 있습니다 및 버튼을 놓을 때를. 대신 다음과 같이 할 수 있습니다.

connect(myButton, &QPushButton::clicked, [this]() {sendMessage("123");} 

또는 직접 슬롯을 만드십시오.