我正在尝试让一个托管的网站(我们称之为online.com)能够从我的Apache本地服务器(WAMP)中获取一些文本文件。然而,当我运行代码时,online.com加载了一段时间,然后出现错误100(超时)。我不知道为什么会这样。我使用sockets来完成这个任务。我已经在我的电脑防火墙上将online.com的ip加入白名单。我已经将监听端口添加到Apache服务器中。我已经进行了端口转发(虽然我不能确定是否正确)。以下是对以上内容的更象征性的表示。端口转发。
当我在online.com上运行php脚本时。
online.com's IP = X, port = 80
local host's IP = (used ipconfig) IPV4 Address, port = Y
Apache
Listening on port Y
白名单
Added IP X
当我在online.com上运行php脚本时。
if (!($sock = socket_create(AF_INET, SOCK_STREAM, 0)))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldn't create socket: [$errorcode] $errormsg \n");
}
echo "Socket created \n";
// Connect socket to remote server
**if (!socket_connect($sock, 'IP X', PORTY))**
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not connect: [$errorcode] $errormsg \n");
}
echo "Connection established \n";
$message = "GET / PRCC /HTTP/1.1 \r\n\r\n";
// Send the message to the server
if (!socket_send($sock, $message, strlen($message) , 0))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not send data: [$errorcode] $errormsg \n");
}
echo "Message send successfully \n";
$buf = "";
// Now receive reply from server
if (socket_recv($sock, $buf, 2045, MSG_WAITALL) === FALSE)
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not receive data: [$errorcode] $errormsg \n");
}
// print the received message
echo $buf . "this is the buffer";
socket_close($sock);
if(!socket_connect($sock , 'IP X' , PORT Y))
这一行是问题的原因。
如果有任何关于可能出错的建议,将不胜感激。