ポートをリッスンして受信データを読み取る単純なソケット デーモン ウィッチを作成しています。クライアントをサーバーから切断することを選択するまでは正常に機能します...その後、無限ループに入ります recv() 最後のパケットが-1にならないことを返します。私の質問は、クライアントが切断されたことを検出して、スレッド/ソケット el を閉じる方法です。
私のスレッドは次のとおりです。
void * SocketHandler(void* lp){
int * csock = (int*)lp;
int test = 0;
char buffer[1024];
int buffer_len = 1024;
int bytecount,ierr;
memset(buffer,0,buffer_len);
while (test == 0)
{
if ((bytecount = recv(*csock, buffer, buffer_len, 0))== -1){
close(csock);
free(csock);
test++;
return 0;
}
else
{
syslog(LOG_NOTICE,"%s",buffer);
}
}
return 0;
};