C でのクライアント サーバー プログラミングに問題があります。
問題は、コードがクライアントコードの while ループでスタックしていることです。コードは @Client です。
while ((n_read=((read(sockfd,&buffer,sizeof(buffer))))>0)
{
buffer[n_read]='\0';
write(fd,buffer,strlen(buffer));
printf("------- the value of n_read is : %d\n",n_read) ;
}
したがって、クライアント側で strace を使用してこのコードをデバッグすると、システム コールのスナップがここに表示されます。サーバーからファイル全体を読み取った後の n_read の値が 1 であることがわかりましたが、サーバーは read=0 の後に正常に読み取りを終了しますか ??? この問題を解決するにはどうすればよいですか
クライアントコードのスナップ:
read(3, "._guardAgainstUnicode(pad)\n# Pad"..., 1025) = 1025
write(4, ".", 1) = 1
write(1, "------- the value of n_read is :"..., 35------- the value of n_read is : 1
) = 35
read(3, "crypted\nwith the already specifi"..., 1025) = 1025
write(4, "c", 1) = 1
write(1, "------- the value of n_read is :"..., 35------- the value of n_read is : 1
) = 35
read(3, " = bytes.fromhex('').join(result"..., 1025) = 1025
write(4, " ", 1) = 1
write(1, "------- the value of n_read is :"..., 35------- the value of n_read is : 1
) = 35