小编给大家分享一下Python基于Socket如何实现简单聊天室,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
华州ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码格式的要求没有那么严格;2、Python属于开源的,所有人都可以看到源代码,并且可以被移植在许多平台上使用;3、Python面向对象,能够支持面向过程编程,也支持面向对象编程;4、Python是一种解释性语言,Python写的程序不需要编译成二进制代码,可以直接从源代码运行程序;5、Python功能强大,拥有的模块众多,基本能够实现所有的常见功能。
具体内容如下
服务端
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/7/27 15:34 # @File : Server.py """ 聊天室服务端 """ import socket,select host='' port=7799 addr=(host,port) inputs=[] members={} #配置服务端 def start_Server(): server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.bind(addr) server.listen(5) return server #返回聊天室成员列表 def show_members(w): name_list=[] for i in w: name_list.append(w[i]) return name_list #处理新的成员 def new_member(server): client,addr=server.accept() print('欢迎进入聊天室 ,%s,%s' % (client,addr)) try: client.send('请输入名字') name=client.recv(1024) inputs.append(client) members[client]=name names='其它用户%s'% (show_members(members)) client.send(names) except Exception,e: print(e) #正式启动服务端 def server_run(): server=start_Server() print 'start' inputs.append(server) while True: rs,ws,es=select.select(inputs,[],[]) for temp in rs: if temp is server: new_member(temp) else: disConnect=False try: data=temp.recv(1024) data=members[temp]+'说'+data except socket.error: data=members[temp]+'离开' disConnect=True if disConnect: inputs.remove(temp) print data for other in inputs: if other!=server and other!=temp: try: other.send(data) except Exception,e: print(e) del members[temp] else: print data for other in inputs: if other!=server and other!=temp: try: other.send(data) except Exception,e: print(e) if __name__ == '__main__': server_run()
客户端
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/7/27 15:34 # @File : Client.py """ 聊天室客户端 """ import socket import select import threading host='127.0.0.1' port=7799 addr=(host,port) #配置连接 def connect(): client=socket.socket() client.connect(addr) return client #显示用户列表 def show_member(s): my=[s] while True: rs,ws,es=select.select(my,[],[]) if s in rs: try: print s.recv(1024) except socket.error: print 'socket is error' exit() #进行对话 def talk(s): while True: try: info=raw_input('>>>') except Exception: print 'can\'t input' exit() try: s.send(info) except Exception,e: print e exit() #主函数 def main(): client=connect() t=threading.Thread(target=show_member,args=(client,)) t.start() t1=threading.Thread(target=talk,args=(client,)) t1.start() if __name__ == '__main__': main()
看完了这篇文章,相信你对“Python基于Socket如何实现简单聊天室”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联成都网站设计公司行业资讯频道,感谢各位的阅读!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。