2014-01-11 2 views
2

C 서버에 연결해야하는 클라이언트를 만들려고합니다. TCP를 사용해야합니다. 이미 모든 기능을 갖춘 서버가 있지만 클라이언트를 연결할 수 없습니다. 나는 서버에 어떤 데이터도 보내고 싶지 않다. 난 그냥 연결을 설정하고 새 대화 상자를 열어 싶습니다.Qt 클라이언트 - C 서버에 연결

다음은 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 클래스에서 private 멤버 (QTcpSocket * pSocket)로 선언됩니다.

불행히도 QT에 익숙하지 않아 'waitNextStep()'함수에 포함해야하는 것이 무엇인지 알지 못합니다. 나는 방금 1을 돌려 줬다. 많은 예제에서 다른 함수가 있다는 것을 알았 기 때문에 connect 함수에서 SLOT에 대해 확신 할 수 없습니다.

프로그램을 실행해도 오류가없고 프로그램이 올바르게 실행됩니다. 하지만 로그인 버튼을 누르면 대화 상자가 약 15 초 동결됩니다. 응답이 없습니다. 그 다음에 '연결시 오류'메시지가 나타납니다. 어떤 도움을 많이 주시면 감사하겠습니다.

+0

"Unfortunatelly 나는 QT를 처음 접했고 'waitNextStep()'함수가 포함해야하는 것이 무엇인지 알지 못합니다." Qt 질문이 아닙니다. _ 유우가 알아야 할 유스 케이스 질문입니다. – lpapp

+0

저는 배울 점이 많다는 것을 알고 있습니다. 그러나 이것은 긴급한 프로젝트이므로 자습서와 예제에서 할 수있는 한 많은 정보를 얻고 있습니다. 나는 지금 문서를 읽고 흡수 할 수 없습니다. 어쨌든 회신 해 주셔서 감사합니다. – KupiKupi

+0

사람들은 일반적인 프로젝트 관리 문제처럼 사람들이 쉽게 빠져 들었습니다. "끝내고, 끝내고, 필요한 작업량을 예측하지 마십시오."어느 쪽이든, 나는 당신의 Qt 기술을 판단하지 않고, 유즈 케이스를 철저히 알지 못한다는 사실을 말하면서, 그 방법에서 정확히 무엇을해야만하는지, 그래서 우리는 더 이상의 명확한 설명없이 일반적인 힌트를 줄 수 있다고 말합니다. – lpapp

답변

0

불행히도 QT를 처음 접했고 'waitNextStep()'함수에 포함해야하는 것이 무엇인지 알지 못합니다. 나는 방금 1을 돌려 줬다. 많은 예제에서 다른 함수가 있다는 것을 알았 기 때문에 connect 함수에서 SLOT에 대해 확신 할 수 없습니다.

대개 사용하는 경우에 따라 다르지만, 일반적으로 들어오는 데이터의 처리기이며, 잠시 동안 멤버 변수에 저장하는 것이 좋습니다.

프로그램을 실행해도 오류가없고 프로그램이 올바르게 실행됩니다. 하지만 로그인 버튼을 누르면 대화 상자가 약 15 초 동결됩니다. 응답이 없습니다. 그 다음에 '연결시 오류'메시지가 나타납니다. 어떤 도움을 많이 주시면 감사하겠습니다.

if(pSocket->waitForConnected())은 비동기 Qt 조작의 블로킹 (즉, 동기화) 사용이기 때문입니다. 내가 대신 할 제안하는 documentation에 따라 연결된 신호에 연결하는 것입니다 :

무효 QAbstractSocket :: 연결() [신호]이 신호는 connectToHost() 후 방출

가 호출되었고, 연결이 성공적으로 설정되었습니다.

참고 : 일부 운영 체제에서는 localhost에 연결하기 위해 connectToHost() 호출에서 connected() 신호를 직접 방출 할 수 있습니다.

+0

이봐 요, 나는 단순히 작동시키지 못합니다. 내가해야 할 일에 대해 좀 더 구체적으로 설명해야합니다. 코드를 여러 번 수정하고 연결된 신호를 사용하려고했지만 기회가 아 닙니다 ... 미리 감사드립니다. – KupiKupi

+0

@ KupiKupi :이 사이트는 가정용 사이트가 아니며, 특히 유스 케이스가 명확하지 않고 오류가 발생했기 때문에 걱정 스럽습니다. 관리자에게 도움을 요청한 관리자가이 상황에있는 사람을 도울 수 없다고 설명하십시오. – lpapp

+0

이 상황에서 발생할 수있는 유일한 위험은 프로젝트를 적시에 완료하지 못하는 것이고 내 일과는 아무런 관련이 없다는 것입니다. '내가 대신 제안하는 것은 문서에 따라 연결된 신호에 연결하는 것입니다. docume 당 그 일을하는 방법에 대한 설명이 없습니다 – KupiKupi