2017-01-11 1 views
-1

서버/클라이언트 응용 프로그램을 만들려고하고 있으며 QT에서 클라이언트 용 GUI 인터페이스를 설계하려고합니다. 이제는 라이브러리를 사용하여 소켓을 만들었습니다. 그러나 Qt Creator에 코드를 작성하면 라이브러리가 포함되어 있어도 sockaddr_in이 정의되지 않았다는 것을 알 수 있습니다. (g ++로 코드를 컴파일하면 문제가 될 수 있습니다.)Qt Creator 정의되지 않은 소켓 - Linux

이렇게 소켓을 선언하는 방법입니다. sockaddr_in server;

EDIT : Q ++ Creator에 g ++ 컴파일러가없는 것일 수 있습니다? 그럴 수도 있습니다. 어떻게 추가합니까? 미안하지만 난 내 응용 프로그램을 시작하기 위해 "시작"버튼을 사용하고 일반

에서 QT 및 프로그래밍에 아주 새로운 오전이 그 안에 코드입니다 :

void MainWindow::on_StartButton_clicked() 
{ 
     int port; 
     port=portiuse; 
     int clientsd; 
     sockaddr_in server; 

     if ((clientsd = socket(AF_INET, SOCK_STREAM, 0)) == -1) 
     { 
      perror("[client]Error\n"); 
      return errno; 
     } 

     bzero (&server, sizeof (server)); 

    server.sin_family = AF_INET; 
    server.sin_addr.s_addr = inet_addr("127.0.0.1"); 
    server.sin_port = htons (port); 

    if((connect(clientsd, (struct sockaddr *) &server, sizeof (struct sockaddr))) == -1) 
    { 
     perror("[client]Error()\n"); 
     return errno; 
    } 

}

그리고 이들은 내가 얻은 오류입니다 :

오류 : 'sockaddr_in'이 (가)이 범위에서 선언되지 않았습니다. sockaddr_in server; ^

오류 '서버'가이 범위 bzero 선언되지 않은 (& 서버는 sizeof (서버)); ^

오류 : 'inet_addr'이 (가)이 범위에서 선언되지 않았습니다. server.sin_addr.s_addr = inet_addr (ip); ^

+0

[mcve]를 게시해야합니다. 문제 코드와 정확한 컴파일/링크 명령 및 오류 메시지를 게시해야합니다. 그것들이 없으면, 당신이 무엇을 잘못하고 있는지 말하기가 매우 어렵습니다. –

+0

그러면 Linux 이외의 플랫폼에서이 문제가 발생 했습니까? 그렇다면 현재 어떤 플랫폼에서 슬픔을 느끼고 있습니까? 아직도 g ++ 컴파일러입니까? –

답변

0

당신이 "라이브러리 포함"했습니다 말한다면, 당신은 <netinet/in.h>을 포함하여 의미합니까?

그리고 QtCreator는 실제로 IDE입니다. 툴체인과 컴파일러의 위치를 ​​알아야합니다. "Option", "Build & Run"에서 Qt 버전, 컴파일러 등의 탭을 통해 확인할 수 있습니다. 일반적으로 GCC를 자동 감지합니다.

그러나 나는 sockin_addr에 대한 오류가 정의되지 않았기 때문에 컴파일 중이라고 생각합니다. 그렇지 않으면, 간단한 "hello world"를 먼저 만들어보십시오.

0

나는 그것을 고치지 만, 나는 바보 였고 하나의 포함을 추가하는 것을 잊었다. 도움을 주신 모든 분들께