如何PHP作为程序的服务端

yuhechao9 2015-07-07 06:54:59
客户端程序用JAVA写,想用PHP做服务端,通过socket通信,那PHP要怎么配置,怎么运行,才能和JAVA程序完成通信呢?(PHP的socket代码会写)
...全文
283 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue44sky 2015-08-07
  • 打赏
  • 举报
回复
推鉴swoole框架,php写server是那么的轻松
qq_17167577 2015-08-06
  • 打赏
  • 举报
回复
workerman php socket 框架吧 代码类似
require_once './Workerman/Autoloader.php';
use Workerman\Worker;

// #### create socket and listen 1234 port ####
$tcp_worker = new Worker("tcp://0.0.0.0:1234");

// 4 processes
$tcp_worker->count = 4;

// Emitted when new connection come
$tcp_worker->onConnect = function($connection)
{
    echo "New Connection\n";
};

// Emitted when data received
$tcp_worker->onMessage = function($connection, $data)
{
    // send data to client
    $connection->send("hello $data \n");
};

// Emitted when new connection come
$tcp_worker->onClose($connection)
{
    echo "Connection closed\n";
};

Worker::runAll();
kankan231 2015-08-06
  • 打赏
  • 举报
回复
swoole扩展
q503959 2015-08-05
  • 打赏
  • 举报
回复
http://www.workerman.net/
傲雪星枫 2015-07-11
  • 打赏
  • 举报
回复
不过php做socket不是很好,既然客户端用java,服务端为什么不用java呢?
傲雪星枫 2015-07-11
  • 打赏
  • 举报
回复
先试试用php 连。
yuhechao9 2015-07-07
  • 打赏
  • 举报
回复
主进程那有点问题,那个先不用管、、、、
yuhechao9 2015-07-07
  • 打赏
  • 举报
回复
已经加载了php_sockets模块,就是用命令行“php 路径 "运行的,但是客户端无论是C还是JAVA就是连接不上,connect 函数出错,不知道为什么,我把服务端代码贴出来吧。 服务端PHP:

<?php
//确保在连接客户端时不会超时
set_time_limit(0);

$ip = '127.0.0.1';
$port = 1935;

/*
 +-------------------------------
 *    @socket通信整个过程
 +-------------------------------
 *    @socket_create
 *    @socket_bind
 *    @socket_listen
 *    @socket_accept
 *    @socket_read
 *    @socket_write
 *    @socket_close
 +--------------------------------
 */

/*----------------    以下操作都是手册上的    -------------------*/
if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0) {
    echo "socket_create() 失败的原因是:".socket_strerror($sock)."\n";
}

if(($ret = socket_bind($sock,$ip,$port)) < 0) {
    echo "socket_bind() 失败的原因是:".socket_strerror($ret)."\n";
}

if(($ret = socket_listen($sock,4)) < 0) {
    echo "socket_listen() 失败的原因是:".socket_strerror($ret)."\n";
}

//$count = 0;

do {
    echo "waiting `````````````````````````` \n";
    if (($msgsock = socket_accept($sock)) < 0) {
        echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
        break;
    } else {
        $pid = pcntl_fork();
        if($pid == -1){
                die('fork child process failure!');
        }else if($pid){
                break;
        }else{
                //发到客户端
                $msg ="测试成功!\n";
                socket_write($msgsock, $msg, strlen($msg));

                echo "测试成功了啊\n";
                $buf = socket_read($msgsock,8192);


                $talkback = "收到的信息:$buf\n";
                echo $talkback;

//              if(++$count >= 5){
//                  break;
//              };
        }
    }
    //echo $buf;
    socket_close($msgsock);

} while (true);

socket_close($sock);
?>
xuzuning 2015-07-07
  • 打赏
  • 举报
回复
PHP 需要加载 php_sockets 扩展,并以 CLI 方式运行。 注意程序中应加入可控的退出机制

21,873

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧