그래서 Apache 웹 사이트 (WAMP)에서 텍스트 파일을 가져올 수 있도록 호스트 된 웹 사이트 (online.com이라고합시다)를 얻으려고합니다.localhost에 대한 소켓 연결 시간이 초과되었습니다.
그러나 온라인 코드를 잠깐 실행하면 오류 100 (시간 초과)이 표시됩니다. 나는 이유를 모른다.
저는 소켓을 사용하고 있습니다. 내 PC의 방화벽에서 online.com에 대한 IP 목록을 허용했습니다. 수신 포트를 Apache 서버에 추가했습니다. 나는 포트 포워딩을 수행했다. (정확히 했어도 100 % 확신 할 수는 없지만).
다음은 위의 더 상징적 인 표현입니다. 나는를 실행하면
포트 포워딩
online.com's IP = X, port = 80
local host's IP = (used ipconfig) IPV4 Address, port = Y
아파치
Listening on port Y
화이트
Added IP X
을 나열 online.com
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))
에 PHP 스크립트는 문제의 원인입니다.
무엇이 잘못 될 수 있는지에 대한 제안은 크게 감사하겠습니다.
무엇이 오류 메시지입니까? 연결이 실패한 후 die()가 특정 오류를 반환합니까? – gladiola