Я использую php-библиотеку socks5, которая подключается к прокси-серверу и передает данные через него. Библиотека работает, когда я делаю один запрос к http-серверу, но когда я делаю второй запрос на получение пустой строки, а на третьем я получаю ошибку
10053 Установленное соединение было прервано программным обеспечением в вашем
хост машина.
Я не понимаю, почему это происходит, я посмотрел обеспокоенный RFC и википедию о сервере socks5, и я думаю, что все соединения правильные. Но все равно не получите второй ответ.
Код библиотеки — один файл, и я получаю его отсюда Socks5Socket
И мой код следующий
set_time_limit(100);
error_reporting ( E_ALL );
require_once "Socks5Socket.php";
$s = new \Socks5Socket\Client();
$s->configureProxy(array(
'hostname' => '162.144.56.44',
'port' => 60088
));
$s->connect('en.wikipedia.org', 80);
$request = "GET /wiki/HTTP_persistent_connection HTTP/1.1\r\n".
"Host: en.wikipedia.org\r\nConnection: Keep-Alive\r\n\r\n";
$s->send($request);
$response = $s->readAll();
//At this point all OK$request2 = "GET /wiki/No-till_farming HTTP/1.1\r\n".
"Host: en.wikipedia.org\r\nConnection: Keep-Alive\r\n\r\n";
$s->send($request2);
// Empty string here, no error
$response2 = $s->readAll();$s->send($request2);
// Errno 10053
$response3 = $s->readAll();
file_put_contents("response.txt",$response2);
$response = substr($response,strpos($response,"»")+1);
//echo $response;
echo "<br><br>".substr($response,strpos($response,"\r\n\r\n")+1);
Хорошо, проблема была в том, что http-сервер закрывал мое соединение, прежде чем я смог сделать что-то еще. Я пытался с SMTP-сервером, и соединение больше не было закрыто.
Других решений пока нет …