Могу ли я открыть сокет в PHP с определенного IP-адреса (если у машины два IP-адреса)?
Я использую PHPMailer, и он использует fsockopen
для доступа к SMTP-серверу.
Но у машины есть два IP-адреса с разными обратными записями DNS. Итак, в заголовках электронной почты я получил следующее:
Received: from one-server.tld (HELO another-server.tld) ...
Мне нужно скрыть one-server.tld
в пользу another-server.tld
. Но мне нужны оба IP-адреса с их текущими настройками RDNS.
2
Author: Pavel Koryagin, 2012-01-23
1 answers
Я думаю, что это невозможно с помощью fsockopen
. Но это возможно в curl
, fopen
и stream
функции. Что вам нужно, так это функция stream_socket_client().
Вот несколько способов достичь этого.
-
С использованием контекстных параметров, которые могут использоваться в семействе функций fopen и семействе потоковых функций. Смотрите пример.
$opts = array( 'socket' => array( 'bindto' => '192.168.0.100:0', ), ); // create the context... $context = stream_context_create($opts); $contents = fopen('http://www.example.com', 'r', false, $context);
Также поток_сокет_клиент
$fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $opts); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n"); while (!feof($fp)) { echo fgets($fp, 1024); } fclose($fp); }
Используя socket_bind. PHP.В СЕТИ появился простой пример здесь.
7
Author: Shiplu Mokaddim, 2012-01-23 06:55:13