私は、クライアントからサーバーに送信する文字列を受け入れる基本的なLinuxソケットプログラムを持っています。 「quit」と入力すると、クライアントプログラムは終了しますが、プログラムを終了するまで、無限に "quit"が表示されます。私は文字列を正しく読み込んでいないか、論理がオフです。あなたが前recv
"quit"文字列が入力されたときにサーバプログラムが終了しない
recv
にmemset
BUFに必要
コードセクション...
while (1)
{
//fetch message from client and write to stdout
num_client_bytes = recv(client_sockfd, buf, LEN, 0);
if (-1 == num_client_bytes)
{
perror("server-- recv failed");
}
else
{
printf("client msg: %s", buf);
if (0 == strcmp(buf, "quit\n"))
{
break;
}
}
}
//remove local socket file and close sockets
unlink(SOCKET_NAME);
close(client_sockfd);
close(server_sockfd);
return 0;
改行も送信してもよろしいですか?または文字列ターミネータ?あなたはどのように文字列を送るのですか? –
printf()のプリントとbufのstrlen()の結果はどうなりますか? – Scooter
@Someprogrammerdude私が知る限り、はい。私は終端ヌルを取り除かない。 – Maddy