2014-09-02 104 views
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可解決問題。

回答

0

發現問題。 KeepAlive在我的Apache服務器上設置爲關閉。設置KeepAlive以解決問題。