Cześć,
Bawię się streamami w PHP, próbuję zrobić prosty serwer z klientem.

server:
  1. if ($connection = stream_socket_accept($this->socket,1))
  2. {
  3. stream_set_timeout($connection, 1);
  4. $str = '';
  5. while (!feof($connection))
  6. $str .= fread($connection, 1024);
  7. // parsujemy request i generujemy odpowiedź
  8. $response = ...
  9. fwrite($connection, $response.PHP_EOL);
  10. fclose($connection);
  11. }


client:
  1. fwrite($this->socket, $data.PHP_EOL);
  2. $str = '';
  3. while (!feof($this->socket))
  4. {
  5. $str .= fread($this->socket, 1024);
  6. }


Klient wysyła dane za pomocą fwrite, i one dochodzą do serwera. Serwer generuje odpowiedź i wysyła również. Niestety, zupełnie nie wiem dlaczego, klient jej nie dostaje. sad.gif Nie otrzymuję też żadnego błędu. W momencie kiedy połączenie jest przerwane, bo np. wcisnę ctrl-c w konsoli gdzie odpaliłem serwer smile.gif, klient czyta pustego stringa, ale wcześniej cały czas czeka na dane.