PHP-клиент Java Server по проблемам Raspberry Pi

Я работаю над некоторыми простыми средствами домашней автоматизации, используя Raspberry Pi. На Pi у меня работает Java-сервер, который может взаимодействовать с выводами GPIO на основе команд, которые он получает. Затем я планирую создать веб-интерфейс с использованием jQuery и PHP для взаимодействия с сервером Java. Пользователь может нажать кнопку на веб-странице, и этот запрос будет обработан с помощью PHP, который установит соединение с сервером Java через сокет. PHP запишет команду на сервер Java на основе ввода пользователя.

Проблема, с которой я столкнулся, заключается в том, что мой PHP-код, работающий на сервере Apache, расположенном на Pi, не будет подключаться к сокету Java. Я получаю сообщение об ошибке «невозможно подключиться [110] истекло время ожидания подключения». С сервером Java, работающим на Pi, я могу подключиться к серверу с клиентом Java с другого компьютера и подключиться к серверу Java через PHP, работающий на моем ноутбуке (обратите внимание, что клиентский код PHP, который я запускал, был одинаковым на обоих машины).

Это приводит меня к мысли, что проблема заключается в том, что PHP работает на самом Pi. Существуют ли какие-либо настройки, включающие разрешения или что-то подобное, которые мешали бы мне иметь возможность подключаться к серверу Java из PHP на Pi?

Кажется, я ничего не могу найти, чтобы предположить, в чем заключается моя проблема. Как я уже сказал, я считаю, что проблема заключается в самом движке PHP, который работает на Pi. Я понятия не имею, какие настройки могут быть причиной этой проблемы. Я не собираюсь публиковать какой-либо код, потому что я подтвердил, что он на самом деле работает как задумано.

Вот Java-сервер, который работает на Raspberry Pi.

ServerSocket welcomeSocket = new ServerSocket(20222);
System.out.println("Server listening for connections");
while(true)
{
Socket connectionSocket = welcomeSocket.accept();
System.out.println("Client Has Connected");

BufferedReader input =
new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
clientCommand = input.readLine();
}

Клиент PHP, который работает на Pi. К вашему сведению, местный адрес Пи 10.0.0.27 Я пытался изменить $HOST переменная к localhost а также 0.0.0.0 все без эффекта.

 $PORT = 20222; //the port on which we are connecting to the "remote" machine
$HOST = "10.0.0.27"; //the ip of the remote machine (in this case it's the same machine)

$sock = socket_create(AF_INET, SOCK_STREAM, 0) //Creating a TCP socket
or die("error: could not create socket\n");
$succ = socket_connect($sock, $HOST, $PORT) //Connecting to to server using that socket
or die("error: could not connect to host\n");

$text = "Hello, Java!"; //the text we want to send to the server
echo "Connected to Server...";
socket_write($sock, "test" . "\n", strlen($text) + 1) //Writing the text to the socket
or die("error: failed to write to socket\n");

После запуска сервера Java и выполнения sudo netstat -tnlp Я получаю этот вывод.
pi@raspberrypi ~ $ sudo netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2427/sshd
tcp 0 0 0.0.0.0:20222 0.0.0.0:* LISTEN 29175/java
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 2508/Xtightvnc
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 2463/Xtightvnc
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 2508/Xtightvnc
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2208/apache2
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 2463/Xtightvnc

Когда PHP-клиент на Pi пытается подключиться, он просто отключается по таймауту. Если я запустил на своем ноутбуке тот же PHP-клиент, который находится в той же сети, что и пи, и просто изменил $HOST Переменная на адрес Пи, я могу без проблем подключиться и записать в сокет TCP. Кажется, что сервер Java работает и слушает, как и должно. Я утверждаю, что проблема с php работает на Pi.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]