PHP套接字客户端读取循环并刷新

时间:2015-05-11 10:27:33

标签: php python sockets inter-process-communicat

我正在PHP和Python守护进程之间进行进程间通信。 python守护程序充当服务器。从PHP开始,我发送初始数据,然后守护进程继续发送一些数据,直到发送“Stop”并且PHP停止读取并关闭连接。

Python服务器:

from socket import socket as sock

s = sock()
host = "localhost"
port = 5903
s.bind((host, port))

print host, port

s.listen(5)
while True:
    c, addr = s.accept()
    print 'Got connection from', addr
    y = c.recv(1024)
    print y
    while True:
        x = raw_input()
        c.send(x)
        if x == "Stop":
            break

PHP客户端:

<?php
//ob_implicit_flush();
$host = "localhost";
$port    = 5903;
$message = "Hello";
echo "Message To server :".$message;
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Create Error\n");
$result = socket_connect($socket, $host, $port) or die("Connect Error\n");
socket_write($socket, $message, strlen($message)) or die("Send Error\n");
echo "Reply From Server  :";
while(1){
    $result = socket_read ($socket, 1024) or die("Read Error\n");
    if($result == "Stop")
        break;
    echo "<br />".$result;
}
socket_close($socket);
?>

每当我在服务器上键入内容并按 Enter 时,PHP上没有输出。通过按 ctrl + c 终止服务器上的连接时,所有发送的数据都以PHP显示。我猜它没有显示,因为它等待指定长度的数据流。我希望PHP客户端能够在收到后立即显示发送的数据。

我已经尝试使用以下代码的Python客户端做同样的事情,它会在收到数据后立即显示收到的数据。

Python客户端:

import socket

s = socket.socket()
host = "localhost"
port = 5903

print host, port
s.connect((host, port))
y = raw_input()
s.send(y)
while True:
    x = s.recv(1024)
    if x=="Stop":
        break
    print x
s.close

无论如何,PHP也可以做同样的事情吗?

0 个答案:

没有答案