如何制作websocket从delphi应用程序套接字读取

时间:2016-04-15 11:44:39

标签: php multithreading sockets delphi websocket

我在我的服务器中实现了Websockets,它很好地与服务器本身进行通信,但它不能直接连接到我的Delhpi应用程序,所以我想,“我只是让Delphi发送信息到PHP,然后进行PHP推送通过Websocket向客户提供信息!“,太棒了!但它不起作用。

我不知道为什么,但我认为它与2个套接字无法同时监听,所以我认为我需要使用Threads或类似的东西。

在纸面上它看起来很简单,看起来我只需要用我的函数启动一个Thread来监听我的Delphi应用程序套接字,当它收到一条消息时,我会将它发送给父进程来通过websocket推送消息,但我无法帮助它,但觉得这种策略有问题。

这是从我的Delphi应用程序的套接字读取的代码:

$modelObj=new Model();
echo $modelObj->title;

在websocket aplication类中,这个函数将messeges推送到客户端,更具体地说是循环使用“Im Waiting X Seconds”

 <?php
/* Cliente */

function enviarPct($skt, $pacote){
    $msg = "$pacote\n";
    socket_write($skt, $msg, strlen($msg));
    echo "TX: $msg";
}

error_reporting(E_ALL);

echo "Conexao TCP/IP em PHP\n";

$address = "192.168.2.26";
$port = 63333;
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, $address, $port);
socket_set_option($sock, SOL_SOCKET, SO_KEEPALIVE, 1);
echo "Conexao: $address:$port\n\n";

enviarPct($sock,"login||20||");
//$msg = "login||20||\n";
//echo socket_write($sock, $msg, strlen($msg));
//echo socket_write($sock, utf8_encode($msg), mb_strlen($msg, 'utf-8'));

echo "Reading response:\n\n";
while ($out = socket_read($sock, 2048)) {
    echo "RX: $out";
    $pct = explode('||', $out);
      if($pct[0]=='sucessoLogin'){
        if($pct[1]!= '-1'){
            enviarPct($sock, "solicitaControladoras||||");
        }
      }
}

//echo socket_read($sock, 2048);

echo "Fechando\n";
socket_close($sock);
?>

就这样,如果有人知道什么对我最有用,我会很高兴听。

0 个答案:

没有答案