python socket多线程通讯实例分析(聊天室)

本文实例讲述了python socket多线程通讯方法。分享给大家供大家参考,具体如下:

#!/usr/bin/evn python"""这是一个Socket+多进程的例子(聊天服务端)"""import socketimport threading# 处理中文数据用的encoding = "GBK"def HKServer(client, addr): """ 与客户端时实通讯函数 加入encoding是为了处理输入中文数据 client 客户socket addr  客户address """ # 通知已有的每个客户,有新的成员加入 for c in clients: c.send(bytes("[%s]加入" % addr[1], encoding)) # 接受客户端数据 say = b"" while True:  data = client.recv(1024)  if not data: break  # 如果不是回车键  if data != b'':   say += data #.encode(encoding)   continue  # 把客户端发来的内容发给所有的客户端  for c in clients:   c.send(bytes("[%s]:%s" % (addr[1], say.decode(encoding)), encoding))  # 内容归  say = b"" # 客户离开后,从客户列表中移队当前客户,关闭socket连接 clients.remove(client) client.close() # 通知已有的每个客户,有成员离开 for c in clients: c.send(bytes("[%s]离开" % 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程序设计有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2536309.html

(0)
上一篇 2025年3月5日 23:18:41
下一篇 2025年3月5日 23:18:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论