PHP的stream_socket_client设置dns服务器

Code 19 0

在使用stream_socket_client时,如果需要设置DNS服务器,可以通过stream_context_set_option函数来实现,这个函数只能设置TCP/IP协议的DNS服务器,不能设置UDP协议的DNS服务器。

常用代码:

<?php
$context = stream_context_create();
stream_context_set_option($context, 'socket', 'bindto', '0.0.0.0:80');
stream_context_set_option($context, 'dns', 'default', '8.8.8.8');
$fp = stream_socket_client('tcp://www.lyplugin.com:80', $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
?>

这段代码首先创建了一个stream context,然后设置了socket和dns选项,socket选项设置了绑定的地址和端口,dns选项设置了默认的DNS服务器,使用stream_socket_client函数连接到服务器。

优化代码:

<?php
$host = 'www.lyplugin.com';
$port = 80;
$timeout = 30;
$context = stream_context_create();
stream_context_set_option($context, 'socket', 'bindto', '0.0.0.0:80');
stream_context_set_option($context, 'dns', 'default', '8.8.8.8');
$fp = @stream_socket_client($host . ':' . $port, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $context);
if (!$fp) {
    echo "$errstr ($errno)<br />
";
} else {
    fwrite($fp, "GET / HTTP/1.0
Host: $host
Connection: Close
");
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

这段代码首先定义了要连接的主机名、端口和超时时间,然后创建了一个stream context,并设置了socket和dns选项,使用stream_socket_client函数连接到服务器,并发送一个HTTP GET请求,如果连接成功,就读取并打印服务器的响应,然后关闭连接。

《 PHP的stream_socket_client设置dns服务器》.doc
将本文下载保存,方便收藏和打印
导出文档