Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过代理的PHP套接字连接_Php_Sockets_Proxy - Fatal编程技术网

通过代理的PHP套接字连接

通过代理的PHP套接字连接,php,sockets,proxy,Php,Sockets,Proxy,我正在处理一个现有的库,我希望它只通过代理建立到套接字的连接。 当前代码为 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $result = socket_connect($socket, "www.host.com", 8080); 我希望通过代理建立此连接的位置(SOCK4/5) 我试过了 socket_bind($socket, '127.0.0.1', '9150'); 这就是vidalia服务器,我也尝试了一些来自互

我正在处理一个现有的库,我希望它只通过代理建立到套接字的连接。 当前代码为

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, "www.host.com", 8080);
我希望通过代理建立此连接的位置(SOCK4/5)

我试过了

socket_bind($socket, '127.0.0.1', '9150');
这就是vidalia服务器,我也尝试了一些来自互联网的代理,它们在firefox上作为sock工作,但无法通过它连接代码

当我试着把上面的线,我得到以下错误


警告:套接字绑定():无法绑定地址[10048]:每个套接字地址(协议/网络地址/端口)通常只允许使用一次。

不想冒犯您,但您似乎不了解TCP/IP网络的基本知识。套接字函数不会帮助您处理SOCKS代理,因为它们没有SOCKS客户端

函数socket_bind()用于设置连接的源地址。不用于将其绑定到远程服务。基本上,您指示套接字显示为来自127.0.0.1:9150,它会抱怨,因为您可能在那里运行SOCKS代理。即使您可以使用此地址/端口,也没有帮助:您无法从本地主机连接到其他任何地方

套接字绑定()的唯一正确用法是在套接字创建()之后和套接字连接()之前-在建立连接之后,您不能更改源地址

解决了这个问题之后,让我们开始讨论“仅通过代理建立到套接字的连接”的问题。老实说,你的问题在细节上确实含糊不清:你想实现什么?您需要一个流,还是只需要通过HTTP请求调用某个远程web服务器

鉴于您对sockets_uuu的误解以及您的问题中有“www.host.com”8080,我相信您正在寻找通过SOCKS代理从www.host.com:8080中提取的网页。在这种情况下,您不需要重新发明轮子并使用cURL:请参阅


如果我的直觉是错误的,你真的需要一个通过SOCKS代理的流,那么你需要一些外部库来为你做这件事。没有标准的PHP扩展可以为您做到这一点。您可以查看如何通过SOCKS获取数据流。

我非常感谢您在解释过程中所做的努力,但您能否给我提供流结构或解释此过程的内容,有什么合适的方法来完成我的尝试吗?请告诉我你到底想做什么:你想访问远程网页还是需要建立数据流?