各位好!向大家请教个问题。
          php作为客户端,通过socket向java写的服务器端发送请求,服务器端能够收到客服端发送的信息,但客户端却收不到服务器端返回的值,要怎么做才能让客户端读取到java返回的信息。

解决方案 »

  1.   

    php:下面是php向服务器端发送数据和读取返回信息的代码
                  $this->socket=fsockopen($this->address,$this->service_port,$errno, $errstr, 20);
    //echo "send it:".$this->socket;
    if (!$this->socket){
    $this->out=99;
    //echo "socket error.<br>";
    }
    else{
    fwrite($this->socket,$in);
    $this->retmsg = fgets($this->socket,1024);
    fclose ($this->socket);
    }
    服务器端的java:
          ServerSocket serverSock = new ServerSocket(2200);
          Socket sock = serverSock.accept();
         BufferedReader read = new BufferedReader(new InputStreamReader(sock.getInputStream()));
         PrintWriter out = new PrintWriter(sock.getOutputStream());
         receive = read.readLine();
         out.println("ok");
         out.flush();
      

  2.   

    服务器端得断开连接,不然PHP不知道发送结束,PHP一个字节一个字节读,或者先指定一个数据长度,让对方知道读取多少字节。
      

  3.   

    我也遇到同样问题,你的问题解决了吗?
    上面说到的方法试了不行,out.close()了还是一样
      

  4.   

    把读取放在while里面,不是一发过去就会有返回的
      

  5.   

    监听和接收的原理要弄明白,
    这其中的握手,连接,返回的时间流程,跟程序自身的时间流程并不是一致的.
    也就是说,你发送了数据,却不知道服务器什么时候会返回你.这是不可控的.
    并不是PHP中前一条语句发送了数据,下一条语句就能立即读到.
    可能在下一条语句执行的时间片之前,响应已经过了,也可能下一句执行完了,响应却还未到达.所以...我想你该知道怎么做了..
    这跟用PHP做socket监听是一样的原理.