クライアントソケットでsend()を呼び出してフィールドを1つずつ返すperlサーバー側ソケットがあります。
コードが以下のような場合、クライアント側ですべてのフィールドを読み取ることに問題はありません。
while ($response = <$sock>) {
print "$response";
last if $response eq "END_OF_REQUEST";
}
しかし、クライアント側のコードが以下のような場合、ループに陥り、機能していません。
while(1) {
$sock->recv($response, 1);
print "$response\n";
last if $response eq "END_OF_REQUEST" ;
}
すべてのフィールドをクラブして、サーバー側で送信を 1 つだけ呼び出すことができることに同意します。しかし、2番目のアプローチの何が問題なのか知りたいです。2番目のアプローチでrecvのLENGTH引数を変更するとうまくいきますか?
ソケットに関する適切な理論的知識がなくても、直接実践するようになりました。お待ち頂きまして、ありがとうございます。