Ладно - меня избили.
У меня есть сервер (PHP-CLI), написанный с использованием функций PHP socket_ *. Я могу просто подключиться к нему с помощью Putty, и он работает как положено.
Однако мой клиент PHP-CLI не работает должным образом. Похоже, что клиент пытается получить сокет от сервера (да, сервер / клиент находятся в одной системе).
Кажется, они соединяются, но если у меня настроен клиент на получение приветственного сообщения от сервера, он просто останавливается. Если у меня есть клиент пишет после подключения, сервер, кажется, отправляет все, и клиент начинает читать правильно - но затем «socket_read» сервера возвращает false (что означает ошибку), но с сообщением об ошибке «Операция завершена успешно».
Вот мой общий алгоритм:
SERVER
$this->_clientSock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($this->_clientSock, $this->_address, $this->_port); // Port is 50000
socket_listen($this->_clientSock, 5);
$this->_clientMsgSock = socket_accept($this->_clientSock);
$msg ="Welcome";
socket_write($this->_clientMsgSock, $msg, strlen($msg));
do
{
while ($buffer = socket_read($this->_clientMsgSock, $this->_readSize, PHP_NORMAL_READ))
$inMsg .= $buffer;
$msg ="You sent '$inMsg '";
socket_write($this->_clientMsgSock, $msg, strlen($msg));
}while ($msg != "quit");
КЛИЕНТ
$this->_serverSock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($this->_serverSock , $this->_address, $this->_port);
socket_write($this->_serverSock , $msg, strlen($msg)); // With this line, the server "socket_read" returns false otherwise the client hangs
while ($buffer = socket_read($this->_serverSock , $this->_readSize, PHP_NORMAL_READ))
$inMsg .= $buffer;
print "The welcome message is $inMsg";