문제

C 서버에 연결 해야하는 클라이언트를 만들려고합니다. 나는 TCP를 사용해야합니다. 이미 완전히 작동하는 서버가 있지만 클라이언트를 연결할 수 없습니다. 서버에 모든 데이터를 보내고 싶지 않습니다 (이 시점에서). 단지 연결을 설정하고 새 대화 상자를 열려고합니다.

void login :: on_pushbutton_clicked () 슬롯의 코드입니다. // pushbuton은 내 로그인 버튼입니다

pSocket = new QTcpSocket (this);
connect (pSocket, SIGNAL(readyRead()), SLOT(waitNextStep()));
pSocket->connectToHost(ui->lineEdit->text(), ui->lineEdit_2->text().toInt());
if(pSocket->waitForConnected())
{
    Menu mMenu;
    mMenu.setModal(true);
    mMenu.exec();
}
else
{
    QMessageBox::critical(this,tr("Error"),tr("Error at Connect"));
}
.

이미 메뉴 클래스를 정의하고 연결 부분없이 테스트 한 이후 기능적이라는 것을 알고 있습니다. LineEdits에서 IP 가져 오는 부분도 기능적입니다. psocket은 login 클래스에서 개인 멤버 (qtcpsocket * psocket;)로 선언됩니다.

불행은 Qt의 새로운 것이고 나는 'waitnextstep ()'함수가 전원을 전하지 않아야합니다. 나는 방금 돌아왔다. 1; 나는 거기에 다른 기능이 있었다는 많은 예에서 알아 차리지 않았기 때문에 연결 기능의 슬롯에 대해 확실하지 않습니다.

프로그램을 실행하면 오류가없고 프로그램이 잘 실행됩니다. 그러나 로그인 버튼을 누르면 대화 상자가 ~ 15 초 동안 정지합니다. 그 후에 'Connect'메시지가 '오류'메시지가 나타납니다. 어떤 도움이 필요할 것입니다.

도움이 되었습니까?

해결책

불행은 Qt의 새로운 것이고 나는 'waitnextstep ()'함수가 전원을 전하지 않아야합니다. 나는 방금 돌아왔다. 1; 나는 거기에 다른 기능이 있었다는 많은 예에서 알아 차리지 않았기 때문에 연결 기능의 슬롯에 대해 확실하지 않습니다.

유스 케이스에 의존하지만 일반적으로 들어오는 데이터의 핸들러이며, 잠재적으로 순간에 회원 변수에 저장하는 것을 잠재적으로 포함시키는 것을 잠재적으로 포함합니다.

프로그램을 실행하면 오류가없고 프로그램이 잘 실행됩니다. 그러나 로그인 버튼을 누르면 대화 상자가 ~ 15 초 동안 정지합니다. 그 후에 'Connect'메시지가 '오류'메시지가 나타납니다. 어떤 도움이 필요할 것입니다.

if(pSocket->waitForConnected())가 비동기 Qt 작업의 차단 (즉, 동기화) 사용이기 때문입니다. 대신 제안 할 것인가는 설명서에 따라 연결된 신호에 연결하는 것입니다. :

void qabstractsocket :: connected () [신호]

ConnectToHost ()가 호출되고 연결이 성공적으로 설정된 후에이 신호가 방출됩니다.

참고 : 일부 운영 체제에서는 ConnectToHost () ConnectToHost () 호출에서 localhost에 대한 연결을 직접 방출 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top