1. ホーム
  2. Qt

ソケットプログラミング、エラーの原因 ソケット以外でのソケット操作

2022-02-15 23:47:47

 Socket operation on non-socket のエラーは、2つの方法で発生します。

      1. ソケットを作成する。

                 if(listenfd= socket(AF_INET,SOCK_STREAM, 0)==-1){. <未定義

                      perror("ソケットの作成に失敗しました!")。
                      exit(-1)を実行します。
                 }

           バインド時にソケット操作で非ソケットエラーになる

           正しいコードは

                  if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1){ [1]) <未定義
                        perror("ソケットの作成に失敗しました!")。
                        exit(-1)を実行します。
                  }

      2.受理するとき。

                 if(connfd=accept(listenfd,(struct sockaddr *)&client_addr,(socklen_t *)&sin_size)==-1){ (Listenfd,(struct sockaddr *)&sin_size)=1)。 <未定義
                      perror("accept error!");
                      exit(-1)です。
                 }

           は、recv時に非ソケットエラーでソケット操作を行います。

           正しいコードは

                 if((connfd=accept(listenfd,(struct sockaddr *)&client_addr,(socklen_t *)&sin_size))==-1){ (Listenfd,(struct sockaddr *)&sin_size))。 <未定義
                         perror("accept error!");
                         exit(-1)です。
                 }

   Socket operation on non-socket のエラーの原因は。

            if(listenfd= socket(AF_INET,SOCK_STREAM, 0)==-1)

            if(connfd=accept(listenfd,(struct sockaddr *)&client_addr,(socklen_t *)&sin_size)==-1))。

   この2つの文の()が抜けていると、割り当てが最も低い優先度に一致し、作成/接続が成功した場合はlistenfdとconnfdが0に、失敗した場合は1になります。