PHPを使用してGPS追跡システムを開発しようとしています。車にGPSトラッキングデバイスがインストールされており、SMS経由でIPアドレスとポートを設定することができます。そのデバイスは、指定されたサーバーポートにデータを送信します。私の理想は、PHPソケットを使用してソケットを聞いてMySQLデータベースに格納します。後で私が欲しいものは何でもできますソケットに接続できませんでした:[111]接続が拒否されました
今、問題はデバイスからメッセージを受け取ることができません。私は、クライアントを実行している場合には(client.php)
<?php
//Creating a Socket
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 "1:: ---- Socket Created </br><br>";
//Connecting to Server
if(!socket_connect($sock, "166.62.10.183", 5544)){
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldn't connect socket: [$errorcode] $errormsg </br>");
}
echo "2:: ---- Connection Established </br></br>";
//Send message to Server
$message = "Message from Web\r\n";
if(!socket_send($sock, $message, strlen($message), 0)){
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldn't not send data: [$errorcode] $errormsg </br>");
}
echo "3:: ---- Message sent </br></br>";
// ?>
:(server.phpという)
<?php
$_SOCKET = "166.62.10.183";
$_PORT = 5544;
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";
// Bind the source address
if(!socket_bind($sock, $_SOCKET , $_PORT))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not bind socket : [$errorcode] $errormsg \n");
}
echo "Socket bind OK \n";
if(!socket_listen ($sock , 10))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not listen on socket : [$errorcode] $errormsg \n");
}
echo "Socket listen OK \n";
echo "Listening on \n SOCKET: ".$_SOCKET."\n PORT: ".$_PORT."\n";
echo "Waiting for incoming connections... \n";
//start loop to listen for incoming connections
while (true)
{
//Accept incoming connection - This is a blocking call
$client = socket_accept($sock);
//display information about the client who is connected
if(socket_getpeername($client , $address , $port))
{
echo "Client $address : $port is now connected to us. \n";
}
//read data from the incoming socket
$input = socket_read($client, 1024000);
$response = "OK .. $input";
echo $response;
}
?>
クライアント側のテスト・コード:最初
私のコードにサーバ側ソケットコードを見てください。 .phpコードを同じサーバから取得すると、server.phpのメッセージを見ることができます(SSH "php server.php"を実行しています)。私は他のサーバからコードを実行しているとき、私は、エラーメッセージ、次の見てい
を拒否しました1 :: ----ソケット作成さ
ソケットは接続できませんでした:[111]接続が
このため、GPSデバイスからのメッセージを受信できないと思います。この問題を解決するために私をガイドしてください。
接続をブロックしている可能性のあるファイアウォールはありますか?プロトコルを「0」と指定するのはなぜですか?あなたは 'SOL_TCP'を望んでいませんか? –
私はチェックして、サーバーのポート22にtelnetで接続できましたが、5544には接続できませんでした。つまり、外部アクセスが有効になっていません。あなたのクラウドプロバイダーがファイアウォールを持っているかマシンがファイアウォールを有効にしているかによって、外部アクセスのためにポート5544を有効にする必要があります –
Thanks @ Don'tPanic。私はすべての利用可能なプロトコルを試しました。しかし、それでも動作しません。私はホスティングプロバイダに連絡し、彼らはポートを開いている。まだ運がありません – Kalaivanan