gpt4 book ai didi

php - 无法连接套接字 : [111] Connection refused

转载 作者:行者123 更新时间:2023-12-03 12:03:47 25 4
gpt4 key购买 nike

我正在尝试使用 PHP 开发 GPS 跟踪系统。我在车辆上安装了 GPS 跟踪设备,我可以通过 SMS 设置 IP 地址和端口。所以该设备会将数据发送到给定的服务器端口。我的理想是,使用 PHP 套接字,我将监听套接字并将其存储到 MySQL 数据库中。以后我可以为所欲为

现在的问题是我无法从设备接收消息。请先查看我的代码

服务器端套接字代码:(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;
}
?>

客户端测试代码:(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>";
// ?>

当我从同一台服务器运行 client.php 代码时,我可以在 server.php 中看到消息(我通过 SSH“php server.php”运行)。当我从任何其他服务器运行代码时,我看到以下错误消息

1:: ---- Socket Created

Couldn't connect socket: [111] Connection refused



我想正因为如此,我无法从 GPS 设备接收消息。指导我解决这个问题。

最佳答案

嗨,如果您提到的 ip 是正确的,那么我只能看到 ftp http 端口打开和 sip 端口。

采用

nmap <ip-addr>

检查开放端口。
或者您可以使用 netcat 进行测试
nc <ip-addr> <port>
OR
nc -v -w 1 <ip-addr> -z <port>

这些工具可帮助您调试。
就像评论中提到的那样,它也可能是防火墙问题。要验证它,您可以将监听端口临时更改为 80。据我所知,它是打开的。
如果那也失败了。我们可能会查看 php 代码以获取更多详细信息。请提供您对上述命令的观察。
使用私有(private) ip(例如 192.168.1.x)和外部网络使用公共(public) ip(例如 166.62.10.183)检查它们是否形成相同的网络。看看你是否看到不同的行为。

关于php - 无法连接套接字 : [111] Connection refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46700838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com