2016-05-30 1 views
0

永続的な接続を使用するHTTPクライアントを作成しようとしています。私のコードは私の最初の要求を送って、私の最初の応答を得るときに働く。しかし、2番目のリクエストを送信すると、2番目のレスポンスを得ることができません。なぜわからないのですか?私はここでC.Ruby:永続的なHTTPクライアントが2番目の要求で応答を受信しない

でコーディングされたときに、同じエラーを得た私は、ネット:: HTTPのように構築されたライブラリを使用したくないコード

require 'socket' 
include Socket::Constants 
socket = Socket.new(AF_INET, SOCK_STREAM, 0) 
sockaddr = Socket.pack_sockaddr_in(80, 'www.google.com') 
socket.connect(sockaddr) 

# This Works 
socket.write("GET/HTTP/1.0\r\n\r\n") 
results = socket.read 

# This Works 
socket.write("GET/HTTP/1.0\r\n\r\n") 
# THIS DOESN'T WORK 
results = socket.read 

です。私はこの仕事をするために何をする必要がありますか?

+0

のStackOverflowあなたの任務を遂行するようには設計されていません。 http://stackoverflow.com/help/how-to-ask –

答えて

0

サーバにあなたがそうすることを期待していない限り、同じ接続で2つのHTTPリクエストを作成することはできません。これはHTTP persistent connectionの仕組みです。最低でも、あなたはあなたのリクエストヘッダにこれを追加してくださいする必要があります。それは一般的になっていますが、サーバーは、基本的な永続的な接続をサポートするため

Connection: keep-alive 

サーバは、持続的な接続のためのサポートが異なるしています。ここでは、あなたの質問があります。What exactly does a “persistent connection” mean?

ここから始めると、永続的な接続が正しく機能するように知っておく必要があります。サーバがあなたの要求を尊重するかどうかを示すためにHTTPレスポンスヘッダをチェックする必要があるかもしれません。あるいは、サーバが最初のレスポンスの記述を終了したときにサーバが単に接続を終了していないことを確認する必要があります。

Connection: close 

はまた、これらのリソースをチェックアウト:永続的な接続を介して、最終的な要求では、あなたはまた、ヘッダーを指定する必要があり

+0

ご協力ありがとうございます!ソート済み! –

+0

@OmarHijazi私はそれを聞いてうれしいです。あなたのプロジェクトに幸運を祈る! –

関連する問題