客户端程序用JAVA写,想用PHP做服务端,通过socket通信,那PHP要怎么配置,怎么运行,才能和JAVA程序完成通信呢?(PHP的socket代码会写)

解决方案 »

  1.   

    PHP 需要加载 php_sockets 扩展,并以 CLI 方式运行。
    注意程序中应加入可控的退出机制
      

  2.   

    已经加载了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);
    ?>
      

  3.   

    先试试用php 连。
      

  4.   

    不过php做socket不是很好,既然客户端用java,服务端为什么不用java呢?
      

  5.   

    http://www.workerman.net/
      

  6.   

    swoole扩展
      

  7.   

    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();
      

  8.   

    推鉴swoole框架,php写server是那么的轻松