我正在使用以下 php 代码通过 php 套接字连接连接并向远程服务器发送请求。
<?php
$host = "X.X.X.X";
$port = 1234;
$message = "<request>test</request>";
echo "Message To server :".$message;
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");
// send string to server
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
// get server response
stream_set_timeout($socket, 10);
$result = socket_read ($socket, 1024) or die("Could not read server response\n");
//echo "Reply From Server :".$result;
$info = stream_get_meta_data($socket);
if (isset($info['timed_out']) && $info['timed_out'])
{
echo 'Connection timed out!';
}
else
{
var_dump($result);
}
// close socket
socket_close($socket);
?>
正如确认的那样,远程机器正在接收我们的请求并在同一会话中向我们发送适当的响应。但不幸的是,执行脚本时我收到以下响应 -
504网关超时。服务器没有及时响应。
当从 Putty(执行代码的同一服务器)尝试时,我几乎立即(不到一秒)得到响应。
没有运行会阻止响应的防火墙。如 telnet 请求和响应中所见,所有 VPN 流量都通过隧道而没有任何阻塞。
现在我无法弄清楚没有通过这个 php 脚本得到响应的确切原因。我浏览了许多教程和示例代码,但没有找到运气。:(
请各位会员帮忙。