Сервер в цикле прослушивает сокет, 5 соед. максимум
while (true)
{
echo 'Accept socket ... ';
if (($msgsock = socket_accept($sock)) < 0)
{
throw new Exception('socket_accept() failed: '.socket_strerror(socket_last_error())."\n");
}
else
{
echo "OK\n";
}
echo "Say to client ($message) ... ";
socket_write($msgsock, $message, strlen($message));
echo "OK\n";
while ( $buf = socket_read($msgsock, 1024) )
{
#echo 'Client said: ';
if (false === $buf )
{
throw new Exception('socket_read() failed: '.socket_strerror(socket_last_error())."\n");
}
else
{
$message = $buf;
echo $buf;
}
}
}
Клиент на машине
function socket_echo ( $MESSAGE )
{
#GLOBAL $SOCKET;
$address = '127.0.0.1'; //Адрес работы сервера
$port = 12345; //Порт работы сервера (лучше какой-нибудь редкоиспользуемый)
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, $address, $port);
socket_write($socket, $MESSAGE, strlen($MESSAGE));
socket_shutdown($socket, STREAM_SHUT_WR);
}
ВОПРОС:
1) хочу понять или как правильно прослушивать соединения — он подключился что бы слушать ответ сервера? или он подключился и ждёт когда я ему отвечу?
2) как правильно закрывать соединение с сокетом? (на стороне клиента)