PHP розетка сломанная труба - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь использовать сокет в PHP, делая сервер клиентом, и когда клиент подключается к моему серверу, он может написать сообщение, сервер получает его правильно, я имею в виду, у меня нет проблем = , Однако, когда я пытаюсь ответить на это сообщение, которое было отправлено клиентом. Я получил эту ошибку: PHP Предупреждение: socket_write (): невозможно записать в сокет [32]: Сломанный канал в ...

Итак, я поставил вам код для сервера:>


<?php
$host = '127.0.0.1';
$port = 1446;
set_time_limit(0);

$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket !.\n");
$result = socket_bind($socket, $host, $port) or die("Could not bind socket\n");
$result = socket_listen($socket, 3) or die("Could not set up socket listener ! \n");
echo "Listening for connection";

class Chat {
    public function readLines() {
        return rtrim(fgets(STDIN));
    }
}
do {
    $accept = socket_accept($socket) or die("Could not accept incoming connection.\n");
    $msg = socket_read($accept, 1024) or die("Could not read input\n");
    $msg = trim($msg);
    echo "Client says : \t " .$msg . "\n\n";

    $line = new Chat();
    echo "Enter Reply : \t";
    $reply = $line->readLines();
    socket_write($socket, $reply, strlen($reply));
    var_dump(socket_strerror(socket_last_error($socket)));

} while (true);
    socket_close($accept, $socket);
?>

А потом код для клиента:>

<!DOCTYPE html>
<html>
    <head>
        <title>yes</title>
    </head>
    <body>
        <div align="center">
            <form method="POST">
            <table>
                <tr>
                    <td>
                        <label>
                            Enter Message :
                        </label>
                    </td>
                    <td>
                        <input type="text" name="message">
                        <input type="submit" name="btn">
                    </td>
                </tr>
                <?php
                    $host = "127.0.0.1";
                    $port = 1446;

                    if (isset($_POST['btn'])) {
                        $msg = $_POST['message'];
                        $socket = socket_create(AF_INET, SOCK_STREAM, 0);

                        socket_connect($socket, $host, $port);
                        socket_write($socket, $msg, strlen($msg));
                        $reply = socket_read($socket, 1024);
                        $reply = trim($reply);
                        $reply = "Server says :\t" . $reply . "\n";
                    }
                ?>
                <tr>
                    <td>
                        <textarea rows='10' cols="30"><?php echo $reply ?></textarea>
                    </td>
                </tr>
            </table>
            </form>
        </div>
    </body>
</html>

Любая помощь, будет очень признателен.

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