2017-01-11 7 views
-1

私はサーバ/クライアントアプリケーションを作ろうとしており、QTでクライアント用のGUIインタフェースを設計しようとしています。今、私はライブラリを使ってソケットを作ることができました。しかし、Qt Creatorにコードを書くと、ライブラリをインクルードしていてもsockaddr_inは定義されていませんでした(g ++でlinuxのコードをコンパイルするとうまくいきます)。Qt Creator未定義のソケット - Linux

これは、ソケットを宣言する方法です。sockaddr_in server;

EDIT:QT 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; ^

エラー: 'server'はこのスコープ内で宣言されていません。 bzero(&サーバー、sizeof(サーバー)); ^

エラー:このスコープ内で 'inet_addr'が宣言されていません。 server.sin_addr.s_addr = inet_addr(ip); ^

+0

問題コードの正確なコンパイル/リンクコマンドとエラーメッセージを投稿する必要があります。それらがなければ、あなたが間違っていることを言うことは非常に難しいです。 –

+0

これは、Linux以外のプラットフォームでこの問題が発生したことを意味しますか?もしそうなら、どのプラットフォームが今あなたに悲しみを与えていますか?それはまだg ++コンパイラですか? –

答えて

0

にライブラリが含まれているとしたら、<netinet/in.h>を含むことを意味しますか?

QtCreatorは確かにIDEです。ツールチェインとコンパイラがどこにあるのかを知る必要があります(または教えてください)。 Qtのバージョン、コンパイラなどのタブを使って、 "Options"、 "Build & Run"の下でこれをチェックすることができます。通常、GCCを自動検出します。

しかし、私はsockin_addrが定義されていないというエラーが出ているので、コンパイルしていると思います。それ以外の場合は、最初に簡単な「こんにちは世界」を構築してみてください。

0

私はそれを修正しました、私はちょうど馬鹿だったし、1つのインクルードを追加することを忘れました。助けをお寄せいただきありがとうございます

関連する問題