#!/usr/bin/evn python这是一个socket+多进程的例子(聊天服务端)import socketimport threading# 处理中文数据用的encoding = gbkdef hkserver(client, addr): 与客户端时实通讯函数 加入encoding是为了处理输入中文数据 client 客户socket addr 客户address # 通知已有的每个客户,有新的成员加入 for c in clients: c.send(bytes([%s]加入\r\n % addr[1], encoding)) # 接受客户端数据 say = b while true: data = client.recv(1024) if not data: break # 如果不是回车键 if data != b'\r\n': say += data #.encode(encoding) continue # 把客户端发来的内容发给所有的客户端 for c in clients: c.send(bytes([%s]:%s\r\n % (addr[1], say.decode(encoding)), encoding)) # 内容归\x0 say = b # 客户离开后,从客户列表中移队当前客户,关闭socket连接 clients.remove(client) client.close() # 通知已有的每个客户,有成员离开 for c in clients: c.send(bytes([%s]离开\r\n % addr[1], encoding))# 客户端列表clients = []# 设置ip地址与端口host = ''port = 9999# 初始化sockets = socket.socket(socket.af_inet, socket.sock_stream)# 绑定ip地址与端口s.bind((host, port))# 开始监听s.listen(1)# 循环等待while true: # 接受客户 client, addr = s.accept() # 启动新的进程与客户通信 thread = threading.thread(target=hkserver, args=(client, addr)) thread.start() # 记录新的客户 clients.append(client)
希望本文所述对大家python程序设计有所帮助。
