php示例中的Socks 4绑定

php示例中的Socks 4绑定,php,socks,Php,Socks,我想绑定一个socks 4代理服务器来连接另一个代理。本例中,secound代理是http代理。当第一个连接正常连接时,服务器应答被授予,但此时通信已完成。本例中的通信是如何继续的?幸运的是,您得到了“已授予”的回复-我没有从OpenSSH中的SOCKS服务器得到任何回复,它只是关闭了连接 据我所知,SOCKS4描述中,type 2(BIND)请求的答案包含一个端口号和一个IP地址;当连接到达它们时,您的程序将能够读取下一个状态数据包,该状态数据包说明连接。等待连接的时间有限(似乎只有2分钟)。

我想绑定一个socks 4代理服务器来连接另一个代理。本例中,secound代理是http代理。当第一个连接正常连接时,服务器应答被授予,但此时通信已完成。本例中的通信是如何继续的?

幸运的是,您得到了“已授予”的回复-我没有从OpenSSH中的SOCKS服务器得到任何回复,它只是关闭了连接

据我所知,SOCKS4描述中,type 2(BIND)请求的答案包含一个端口号和一个IP地址;当连接到达它们时,您的程序将能够读取下一个状态数据包,该状态数据包说明连接。等待连接的时间有限(似乎只有2分钟)。这主要针对FTP客户端-FTP服务器需要与客户端的反向连接,绑定允许传递连接


如果您想从您的一侧启动连接,请使用类型1(连接)请求。另外,请确保请求中的端口和IP地址是正确的-在您的代码中,它们似乎是80和192.240.30.126。

您很幸运,您得到了“已授予”的答复-我在OpenSSH中没有从SOCKS服务器得到任何答复,它只是关闭了连接

据我所知,SOCKS4描述中,type 2(BIND)请求的答案包含一个端口号和一个IP地址;当连接到达它们时,您的程序将能够读取下一个状态数据包,该状态数据包说明连接。等待连接的时间有限(似乎只有2分钟)。这主要针对FTP客户端-FTP服务器需要与客户端的反向连接,绑定允许传递连接

如果您想从您的一侧启动连接,请使用类型1(连接)请求。此外,请确保请求中的端口和IP地址正确-在代码中,它们似乎是80和192.240.30.126

<?php

error_reporting(E_ALL);

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false)
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";

$result = socket_connect($socket, "92.51.77.126", 1080); // socks ip

if ($result === false)
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";

$in  = "\x04\x02";
$in .= "\x00\x50";  // http proxy port
$in .= "\xc0\xf0\x2e\x7e";  // http proxy ip address
$in .= "\x00";

socket_write($socket, $in, strlen($in));

sleep(1);

$in  = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";

socket_write($socket, $in, strlen($in));

$out = '';
while ($out = socket_read($socket, 2048)) {
    echo $out;
}

socket_close($socket);

?>