fork download
  1. <?php
  2.  
  3. $address = '127.0.0.1';
  4. $port = 1337;
  5.  
  6. if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
  7. echo "Не удалось создать сокет, причина: " . socket_strerror(socket_last_error()) . "\n";
  8. die;
  9. }
  10.  
  11. if (socket_bind($sock, $address, $port) === false) {
  12. echo "Не удалось привязать сокет к адрресу, причина: " . socket_strerror(socket_last_error()) . "\n";
  13. die;
  14. }
  15.  
  16. if (socket_listen($sock, 5) === false) {
  17. echo "Не удалось выполнить socket_listen(): причина: " . socket_strerror(socket_last_error($sock)) . "\n";
  18. }
  19.  
  20. do {
  21. if (($msgsock = socket_accept($sock)) === false) {
  22. echo "Не удалось выполнить socket_accept(): причина: " . socket_strerror(socket_last_error($sock)) . "\n";
  23. break;
  24. }
  25.  
  26. socketWrite($msgsock, "Welcome\r\n\r\n");
  27.  
  28. do {
  29. if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
  30. echo "не удалось прочитать сокет, причина: " . socket_strerror(socket_last_error($msgsock));
  31. break 2;
  32. }
  33.  
  34. $buf = trim($buf);
  35.  
  36. if ($buf == "") {
  37. break;
  38. }
  39.  
  40. if ($buf == "\r\n") {
  41. break;
  42. }
  43.  
  44. socketWrite($msgsock, $buf);
  45. } while (true);
  46. socket_close($msgsock);
  47. } while (true);
  48.  
  49. socket_close($sock);
  50.  
  51. function socketWrite($msgsock, $buffer) {
  52. $length = strlen($buffer);
  53.  
  54. while ($bytesSent = socket_write($msgsock, $buffer)) {
  55. if ($bytesSent == $length) {
  56. echo "all bytes have been sent \n";
  57. break;
  58. } else {
  59. $buffer = substr($buffer, $bytesSent);
  60. }
  61. }
  62.  
  63. if ($bytesSent === false) {
  64. echo "Не удалось записать данные в сокет, причина:" . socket_strerror(socket_last_error());
  65. socket_close($msgsock);
  66. }
  67. }
Time limit exceeded #stdin #stdout 5s 61640KB
stdin
Standard input is empty
stdout
Standard output is empty