1.recvトリガ
間違ったソケット、リスニングソケットとの接続ソケット誤用。例としては、次のとおりです:
for(;;){
socklen_t len = sizeof(client_address);
connfd = accept(listenfd, (struct sockaddr *)&client_address, &len);
if(connfd < 0){
printf("accept error: %s\n", strerror(errno));
}
printf("server get connection from %s\n", inet_ntop(AF_INET, &client_address.sin_addr, buff, sizeof(buff)));
if((n = read(listenfd, message, 1024)) == -1){
printf("read error: %s\n", strerror(errno));
exit(1);
}
message[n] = '\0';
printf("receive the message of client: %s\n", message);
close(connfd);
}
サーバー側とディスプレイの情報クライアントが上を通過するコード上記のクライアントリンク要求を受信すると、正常に生成新しいディスクリプタカーネルは()関数を読み取るためにそう呼び出した後、connfdに割り当てられている機能のリターンを受け入れ、最初のパラメータSHOULDそれは、代わりにlistenfd connfdされます。だから、コード行9は、読んでください
if((n = read(connfd, message, 1024)) == -1){
2.shutdownトリガ
場合は、クライアントソケットがサーバーソケットコールのシャットダウンは、このエラーが発生し、シャットダウンされました。