各位好!向大家请教个问题。
php作为客户端,通过socket向java写的服务器端发送请求,服务器端能够收到客服端发送的信息,但客户端却收不到服务器端返回的值,要怎么做才能让客户端读取到java返回的信息。
php作为客户端,通过socket向java写的服务器端发送请求,服务器端能够收到客服端发送的信息,但客户端却收不到服务器端返回的值,要怎么做才能让客户端读取到java返回的信息。
解决方案 »
- 安装Apache 2.2.17 + PHP 5.3.5 时不能安装 Oracle 和 Sybase扩展的原因
- php 验证 username 唯一 怎么写?
- 救命啊!!!使用header下载文件在winxp中无效
- 淘宝搞php相关的大会,你都想听听啥?
- 请问MySQL数据库的中每个数据库可以包含的Table数量以及每个Table的最大行数列数
- 如何读取数据库中最后一条记录?
- 网页不加后缀无法访问十分火急!请求帮助
- 请教一个session问题
- 请问如何象邮箱删除邮件那样,选中多条所要删除的记录,点删除按钮,把相应记录从数据库删除
- magent做memcached集群问题求教
- 我要做一个会员积分管理系统!有经验的进来谈谈!
- 讨论一下:大家有做过网站通行证的吗?跨域的和不跨域的?
$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监听是一样的原理.