各位好!向大家请教个问题。
php作为客户端,通过socket向java写的服务器端发送请求,服务器端能够收到客服端发送的信息,但客户端却收不到服务器端返回的值,要怎么做才能让客户端读取到java返回的信息。
php作为客户端,通过socket向java写的服务器端发送请求,服务器端能够收到客服端发送的信息,但客户端却收不到服务器端返回的值,要怎么做才能让客户端读取到java返回的信息。
解决方案 »
- 怎样用php socket实现两个客户端之间的通信,不是客户端与服务器端的那种!!只用php socket,不借助ajax等其他方法
- 帮忙看意思sql语句中的like怎么使用?
- 求大虾帮助!user=".$_GET['user']." 这个表达式什么意思
- mysql比较好用的图形化客户端有哪些?
- 求助DISCUZ7.2 用户注册不成功问题
- php-Mojavi...人在外国,身无分文..跪求解答!!!!
- 关于PHP的加密方法
- 请问在PHP中有函数能实现对文件的编码转换吗?(请进入看需求)
- 如何发邮件
- PHP和ORACLE的联结问题! 困惑中
- 我要做一个会员积分管理系统!有经验的进来谈谈!
- 讨论一下:大家有做过网站通行证的吗?跨域的和不跨域的?
$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();
上面说到的方法试了不行,out.close()了还是一样
这其中的握手,连接,返回的时间流程,跟程序自身的时间流程并不是一致的.
也就是说,你发送了数据,却不知道服务器什么时候会返回你.这是不可控的.
并不是PHP中前一条语句发送了数据,下一条语句就能立即读到.
可能在下一条语句执行的时间片之前,响应已经过了,也可能下一句执行完了,响应却还未到达.所以...我想你该知道怎么做了..
这跟用PHP做socket监听是一样的原理.