режимы порта ответственны в этом случае.Если вы используете буферизованный ввод-вывод в режиме ожидания (который включен по умолчанию).
в http, клиент отвечает за закрытие порта, когда вы прочитали все байты сервера.
так как вы в основном используете tcp напрямую, используя порт вставки, вы также ответственны за обнаружение конца запроса и закрытие порта, когда поступило достаточное количество байтов.это может быть сделано только в / lines или / no-wait при выполнении низкоуровневого tcp fun.
Что-то, что читает и информация?сделать для вас.
, пока [data: copy port] [append out data]
не завершается, пока не истечет время ожидания (которое по умолчанию составляет 30 секунд в REBOL).
также, ваш запрос, похоже, содержит ошибку ...
попробуйте это:
port: open/lines tcp://cdimage.ubuntu.com:80
insert port {HEAD /daily/current/natty-alternate-i386.iso HTTP/1.0
Accept: */*
Connection: close
User-Agent: REBOL View 2.7.7.3.1
Host: cdimage.ubuntu.com
}
out: form copy port
block: parse out none ;rejoin [": ^/"]
probe select block "Content-Length:"
здесь кажется, что добавление / строк предотвратит ожидание.Вероятно, это связано с тем, как http-схема обрабатывает линейный режим при открытии.
поищите режимы портов REBOL в документации, а в сети это хорошо объяснено повсюду.
Если вы использовали трассировку / сеть, вы поняли, что все пакеты были получены, и что переводчик все еще ждет.Кстати, ваш код на самом деле вернул ошибку 400 в моих тестах.