我正在尝试将数据从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()
答案 0 :(得分:1)
PHP输出没有立即发送到浏览器。 Httpd服务器等待php脚本完成,然后将整个输出发送到客户端。
php脚本中的 while(true){
无限期运行,直到socket_accept
,socket_read
或超时为止。
您需要在循环中定义一个退出点,以最终停止脚本并将数据发送到浏览器。