背景
由于目前项目中没有使用到浏览器,所以从服务端推送消息到客户的重任到了tcp上,本博客讲了如何用python的socket编程实现服务端到客户端的消息推送。
思路
服务端开两个端口7890和9999,7890负责连接客户端,9999负责连接触发端,客户端连接上后挂起等待消息,触发端触发后向所有连接的客户端发送消息。
客户端
连接服务端的7890端口,并且用循环接收和打印服务端推送的数据。客户端代码如下:
from socket import *
import time
def main():
tcp_client_socket = socket(AF_INET, SOCK_STREAM)
server_ip = "127.0.0.1"
server_port = 7890
tcp_client_socket.connect((server_ip, server_port))
msg = "hello sever!"
start_time = time.time()
tcp_client_socket.send(msg.encode("utf-8"))
while True: # 死循环接受服务端推送的信息
recv_data = tcp_client_socket.recv(1024)
print("接收数据:", recv_data.decode("utf-8"))
print("花费时间:{}s".format(time.time()-start_time))
# 关闭套接字
tcp_client_socket.close()
if __name__ == "__main__":
main()
触发端
用于通知服务端对所有的客户端进行消息的通知,代码与客户端类似,如下:
from socket import *
import time
def main():
tcp_client_socket = s