我发现我php socket服务端和客户端通讯没问题,然后想把数据发送到html页面上的时候,就会报错。应该怎么处理。

解决方案 »

  1.   


    set_time_limit(0);
    $address = "127.0.0.1";
    $port = 1009; 
    $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    //阻塞模式
    socket_set_block($sock) or die("socket_set_block() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    $result = socket_bind($sock, $address, $port) or die("socket_bind() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    $result = socket_listen($sock, 4) or die("socket_listen() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    do { 
     $msgsock = socket_accept($sock) or die("socket_accept() failed: reason: " . socket_strerror(socket_last_error()) . "/n");
     $buf = socket_read($msgsock, 8192);
     $sendStrArray = str_split(str_replace(' ', '', $buf), 2);
    for ($i = 0; $i < count($sendStrArray); $i++) {
    if($i==14){
    echo "people:".hexdec($sendStrArray[$i])."\t\t\n";
    }

    } socket_close($msgsock);
    } while (true);
    socket_close($sock);
      

  2.   

    就是我这个服务端获取到客户端发送的数据,怎么把这个数据在发送到html页面上
      

  3.   

    /**
     * @Title:实例化时配置函数
     * @Name:Send
     * @Param $newClinet 新接入的socket
     * @Param $msg 要发送的数据
     * @return int|string
     */
    public function Send($newClinet, $msg){
    $msg = $this->frame($msg);
    socket_write($newClinet, $msg, strlen($msg));
    }
     
    public function frame($s) {
    $a = str_split($s, 125);
    if (count($a) == 1) {
    return "\x81" . chr(strlen($a[0])) . $a[0];
    }
    $ns = "";
    foreach ($a as $o) {
    $ns .= "\x81" . chr(strlen($o)) . $o;
    }
    return $ns;
    }$this -> Send(sock,"发送给客户端的内容");