0

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
4

1 に答える 1