Я пытаюсь использовать сокет в 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>
Любая помощь, будет очень признателен.