PHP的stream_socket_client设置dns服务器
在使用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
将本文下载保存,方便收藏和打印
导出文档