Подключение PHP Script к Java с помощью Socket - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь разместить веб-сервер с небольшим php-скриптом, который отправляет одну строку в Java-программу (на локальном компьютере) и возвращает одну строку обратно из программы. После этого другой клиент должен иметь возможность подключиться. В настоящее время я получаю некоторые таймауты с помощью сценария php и не могу понять, почему ...

Java

public void start() {
        try {
            ServerSocket serversocket = new ServerSocket(port);
            while (true) {
                Socket client = serversocket.accept();

                PrintWriter out = new PrintWriter(client.getOutputStream(), true);
                BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8"));


                String[] request = in.readLine().split(";");
                String answer = "";

                ...getting the answer...

                out.println(answer + "\n");
                out.close();
                in.close();
                client.close();
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

PHP

<?php
$fp = fsockopen(getHostByName(getHostName()), 77777, $errno, $errstr, 5);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    fwrite($fp, "test\n");
    echo fgets($fp, 128); 
    fclose($fp);
}
?>

1 Ответ

0 голосов
/ 14 марта 2019

Хорошо, я думаю, что у меня был перманентный цикл в части «Получение ответа». Теперь работает нормально. В любом случае, вот мой новый код PHP:

<?php
    $sock = socket_create(AF_INET,SOCK_STREAM,0) or die("Cannot create a socket");
    socket_connect($sock,getHostByName(getHostName()),7777);
    $data = "arg1;arg2;arg3\n";
    socket_write($sock, $data, strlen($data));
    echo socket_read($sock, 2048);
    socket_close($sock);
?>

И обязательно добавьте / раскомментируйте это в своем файле php.ini:

расширение = розетки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...