2
我有以下perl腳本通過sinlge tcp連接發送流水線http請求。第一個請求通過,我能夠得到迴應。第二次請求也被髮送,但沒有收到此請求的迴應。我能夠在跟蹤中看到服務器上收到的兩個請求。無法通過perl套接字發送流水線http請求
use IO::Socket::INET;
$| = 1;
$socket = new IO::Socket::INET (
PeerHost => '10.102.218.56',
PeerPort => '80',
Proto => 'tcp',);
die "cannot connect to the server $!\n" unless $socket;
print "connected to the server\n";
# data to send to a server
my $req = "GET /test/file5.html HTTP/1.1\r\nHost:10.102.218.50\r\nAccept: */*\r\n\r\n\r\n";
my $size = $socket->send($req);
print "1. sent data of length $size\n";
$socket->recv($response, 1024);
print "received response: $response\n";
my $req = "GET /test/file5.html HTTP/1.1\r\nHost:10.102.218.50\r\nAccept: */*\r\n\r\n\r\n";
my $size = $socket->send($req);
print "1. sent data of length $size\n";
$socket->recv($response, 1024);
print "received response: $response\n";
sleep 1;
$socket->close();
關於Apache訪問日誌,我看到正在接收HTTP請求只有一個實例:
10.102.218.50 - - [02/Sep/2014:23:04:50 +0530] "GET /test/file5.html HTTP/1.1" 200 6 "-" "-"
我猜測,我缺少一些字符表示服務器的HTTP請求結束。但我無法找到它們。
我在這裏做錯了什麼?
編輯:Apache服務器可以在第一個HTTP請求被回答後關閉連接。有這樣的設置嗎?
Edit2:KeepAlive在我的apache服務器上設置爲Off。將其設置爲ON可解決問題。