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连接数据库问题
- 请教一个XML问题
- 【PHP动态调用方法】带参数
- 数据库 相同数据合并输出表格
- mysql动态链接库加载问题,急需解答~~~
- 能提供个php406.exe文件吗?到哪里下载啊?
- 我想让php 支持mssql 应该怎么做
- 关于用PHP启动外部程序的问题.高手请进.
- 请问那位可以提供php调用水晶报表的代码
- b/s 结构 做 erp,用什么技术
- 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进行交互