perl_server.plPythonの:私は島嶼地区などにはどうすればよい
$client_socket = $socket->accept();
if (defined $client_socket) {
$client_socket->autoflush(1);
$client_socket->setsockopt(SOL_SOCKET, SO_RCVTIMEO, pack('l!l!', 30, 0)) or die "setsockopt: $!";
}
while (1) {
my $line = "";
$client_socket->recv($line, 1024);
print "$line\n";
}
python_client.py
def random_line():
return "random len of line here"
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = (brock_host, int(brock_port))
sock.connect(server_address)
while True:
sock.sendall(random_line())
時点で1024のバイトを送信してくださいが、そのためperl_serverは一度にラインを受信する(マングルされません) ?
それとも別のラインが入って来ない限り、それはサーバ側で印刷していないですので、バッファリングされることから行を防ぎますか?
私が送信された項目のサイズが1024であることを確認した場合、その後、perlのサーバが正しい時間、でラインになるだろうと考えていますか?
にはどうすればいいのラインが一度に1024バイトの場合は確認していますか?
いただきました!良い戦略行が1024バイトを超える場合は? (これは心配するケースであるかどうかわからない)
通常、行は50文字
sendallはあなたのためにそれをしない、 –
が)のは、行が1524バイト、sendallを(持っているとしましょう@self 1024バイトと500のバイトを送信します。サーバーは1024バイトを正常に読み取ることができますが、500バイトでブロックされますが、正しいですか? 2x 1024バイトを送信するsendall保証はありますか?行未満1024バイトを持っている場合 – ealeon