php作为客户端,通过socket向java写的服务器端发送请求,服务器端能够收到客服端发送的信息,但客户端却收不到服务器端返回的值,要怎么做才能让客户端读取到java返回的信息。
//客户端方法一:
$sock = fsockopen("udp://127.0.0.1", 8888, $errno, $errstr, 1);
if (!$sock)
{
echo "$errstr ($errno)<br />\n";
}else{
// socket_set_blocking($sock,false);
fputs($sock, "status");
while (!feof($sock)) {
$msg .= fgets($sock, 128);
}
}
fclose($sock); 方法二:
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, '127.0.0.1', '8888');
if($result >= 0)
{
$command = "status"
$isError = socket_write($socket, $command, strlen($command));
if($isError > 0)
{
$msg = socket_read($socket, 100);
echo $msg;
}
}else{
$msg = "socket error!";
}//服务器端
SocketAddress address = client.getLocalSocketAddress();
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
String str=in.readLine();
if(str != null)
{
if(str.equals("status")){
out.println("hello");
}
}
out.close();
in.close();
client.close();php的
//客户端方法一:
$sock = fsockopen("udp://127.0.0.1", 8888, $errno, $errstr, 1);
if (!$sock)
{
echo "$errstr ($errno)<br />\n";
}else{
// socket_set_blocking($sock,false);
fputs($sock, "status");
while (!feof($sock)) {
$msg .= fgets($sock, 128);
}
}
fclose($sock); 方法二:
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, '127.0.0.1', '8888');
if($result >= 0)
{
$command = "status"
$isError = socket_write($socket, $command, strlen($command));
if($isError > 0)
{
$msg = socket_read($socket, 100);
echo $msg;
}
}else{
$msg = "socket error!";
}//服务器端
SocketAddress address = client.getLocalSocketAddress();
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
String str=in.readLine();
if(str != null)
{
if(str.equals("status")){
out.println("hello");
}
}
out.close();
in.close();
client.close();php的
解决方案 »
- 正则拿网站实例 问题
- PHP的array获取值操作的问题.
- php分页
- 问一个关于导航和相关网页的问题
- echo后面是什么可以实现转跳?
- php5.3问题
- 抓取网页数据提交到库
- php源码大全 大家把手中的源码站点公布一下吧,以后也方便你找东西!
- PHP向IE输出纯文本问题。
- 读取文本文件某行没有一步到位的方法吗?
- clean_for_javascript 是什么意思,在哪能找到关于的资料?????
- 用户点击下载,弹出另存为的框,选择自己的本地的路径,保存图片,在IE6上可以正常运行的,但是在firefox测试的时候出现 savepic is not defined ? 不知道如何解决,请求高手帮
监听和接收的原理要弄明白,
这其中的握手,连接,返回的时间流程,跟程序自身的时间流程并不是一致的.
也就是说,你发送了数据,却不知道服务器什么时候会返回你.这是不可控的.
并不是PHP中前一条语句发送了数据,下一条语句就能立即读到.
可能在下一条语句执行的时间片之前,响应已经过了,也可能下一句执行完了,响应却还未到达. 所以...我想你该知道怎么做了..
这跟用PHP做socket监听是一样的原理.
$timeout = 10;
while ($timeout--) {
//读取 socket sleep(1);
}
if ($timeout === 0) {
echo "超时";
}
?>
file_get_contents("php://input");
准备用xml进行交互