2016-05-30 6 views
0

Я пытаюсь создать HTTP-клиент, который использует постоянные соединения. Мой код работает, когда я отправляю свой первый запрос и получаю свой первый ответ. Однако, когда я отправляю второй запрос, я не могу получить второй ответ. Я не уверен, почему? Я получил ту же ошибку, когда я кодирования в C.Ruby: Постоянный 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 

Я не хочу использовать встроенные библиотеки, такие как Net :: HTTP. Что мне нужно сделать, чтобы сделать эту работу?

+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 Я рад это слышать. Удачи с вашим проектом! –

 Смежные вопросы

  • Нет связанных вопросов^_^