Php服务器套接字从python客户端套接字接收连续数据

时间:2016-12-15 08:37:34

标签: php python sockets

我正在尝试将数据从python客户端套接字连续发送到php服务器套接字,我已经能够发送一次数据并将其打印出来。但是,如果我将服务器放在while循环中以继续监听,那么它获取的数据就不再打印出来了。如果我发回东西,它仍会响应客户端。

Python客户端代码(这将放在每次发送内容时调用的函数中):

URL GOTO=javascript:void(function(){var<SP>a,e;a=document.cookie.split(";<SP>");for(e=0;e<a.length&&a[e];e++)document.cookie=a[e]+";<SP>expires="+(new<SP>Date(0)).toUTCString();}())

Php服务器代码:

import socket
import sys

def main():
    host = 'localhost'
    port = 5003  # The same port as used by the server
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print >> sys.stderr, 'connecting to %s port %s' % (host, port)
    s.connect((host, port))
    s.sendall("Hello! Heartbeat 40!")
    data = s.recv(1024)
    s.close()
    print('Received', repr(data))
if __name__ == "__main__":
    main()

1 个答案:

答案 0 :(得分:1)

PHP输出没有立即发送到浏览器。 Httpd服务器等待php脚本完成,然后将整个输出发送到客户端。

php脚本中的

while(true){无限期运行,直到socket_acceptsocket_read或超时为止。

您需要在循环中定义一个退出点,以最终停止脚本并将数据发送到浏览器。