php socket服务端循环读取客户端提供的字符串

客户端

 <?php 
    header("Content-type:text/html;charset=utf-8");
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    $bool = socket_connect($socket, "192.168.1.102", 1500);

    if(!$bool){
        echo "连接失败";
    }else{
        $write_str = "服务端从客户端读取字符串服务端从客户端读取字符串服务端从客户端读取字符串服务端从客户端读取字符串服务端从客户端读取字符串";
        socket_write($socket, $write_str, strlen($write_str));
        $buf = "";
        while(0 != strlen(($str = socket_read($socket, 40)))){
            $buf .= $str;
        }
        echo $buf;
        echo strlen($buf);
    }

    socket_close($socket);
?>

服务端

 <?php 

    /************************************/
    /*                                  */
    /*             SOCKETS              */
    /*                                  */
    /************************************/
    set_time_limit(0);

    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        socket_bind($socket, "192.168.1.102", 1500);
        socket_listen($socket);
    $str = "";
    // $new_socket =  socket_accept($socket);

    header("Content-type:text/html;charset=utf-8");
    static $socketArr = array();

    do{
        if(($new_socket =  socket_accept($socket)) < 0){
            echo "失败";
            break;
        }
        echo "ok";

        $buf = "";
        while(0 != strlen(($str = socket_read($new_socket, 40)))){
            $buf .= $str;

        }
        // $str = socket_read($new_socket, 40);
        // socket_write($new_socket, $str);
        socket_write($new_socket, "客户端输入:" . $buf);

        socket_close($new_socket);

    }while(true);
    socket_close($socket);

?>

这样写代码 客户端和服务端都一直没响应

服务端不能把客户端读取的字符串返回给客户端

有那个phper高手知道这是什么原因啊 或者 服务端循环读取指定字符串长度 再返回给客户端的代码

http://fighter.blog.51cto.com/1318618/1533957/

请问这个问题,你最终是怎么解决的?谢谢