socket_create_listen

Discussion in 'PHP' started by Ru}{eeZ, 4 Jun 2009.

  1. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Почему при обращении к серверу, сервер реагирует только на 1 символ?

    PHP:
    <?php
    set_time_limit
    (120);
    $socket socket_create_listen('54321');
    if(!
    $socket) die('Error');
    while(
    true) {
      
    $client socket_accept($socket);
      
    socket_write($client,'Hello, user :)');
      while(
    true) {
        
    $read trim(socket_read($client,256));
        if(
    $read == '!close') break;
        if(
    $read == '!exit') {
          
    socket_close($socket);
          break 
    2;
        }
        
    socket_write($client,$read."\n");
      }
      
    socket_close($client);
    }
    socket_close($socket);
    ?>
    Результат следующий:
    Code:
    Hello, user :)vv
                    dd
                      vv
                        dd
                          bb
                            vv
                              bb
                                dd
                                  bb
    
     
    #1 Ru}{eeZ, 4 Jun 2009
    Last edited: 4 Jun 2009
  2. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Нашёл один из выходов:
    Константа PHP_NORMAL_READ в socket_read(), т.е. новая строчка выглядит так: $read = trim(socket_read($client,256,PHP_NORMAL_READ));
     
  3. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Очень хорошая статья на эту тему http://i-novice.net/sokety-v-php/ как раз, то что тебе нужно!
     
    1 person likes this.