Python基于Socket实现简单聊天室
本文实例为大家分享了Python基于Socket实现简单聊天室,供大家参考,具体内容如下
服务端
#!/usr/bin/envpython #-*-coding:utf-8-*- #@Time:2017/7/2715:34 #@File:Server.py """ 聊天室服务端 """ importsocket,select host='' port=7799 addr=(host,port) inputs=[] members={} #配置服务端 defstart_Server(): server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.bind(addr) server.listen(5) returnserver #返回聊天室成员列表 defshow_members(w): name_list=[] foriinw: name_list.append(w[i]) returnname_list #处理新的成员 defnew_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) exceptException,e: print(e) #正式启动服务端 defserver_run(): server=start_Server() print'start' inputs.append(server) whileTrue: rs,ws,es=select.select(inputs,[],[]) fortempinrs: iftempisserver: new_member(temp) else: disConnect=False try: data=temp.recv(1024) data=members[temp]+'说'+data exceptsocket.error: data=members[temp]+'离开' disConnect=True ifdisConnect: inputs.remove(temp) printdata forotherininputs: ifother!=serverandother!=temp: try: other.send(data) exceptException,e: print(e) delmembers[temp] else: printdata forotherininputs: ifother!=serverandother!=temp: try: other.send(data) exceptException,e: print(e) if__name__=='__main__': server_run()
客户端
#!/usr/bin/envpython #-*-coding:utf-8-*- #@Time:2017/7/2715:34 #@File:Client.py """ 聊天室客户端 """ importsocket importselect importthreading host='127.0.0.1' port=7799 addr=(host,port) #配置连接 defconnect(): client=socket.socket() client.connect(addr) returnclient #显示用户列表 defshow_member(s): my=[s] whileTrue: rs,ws,es=select.select(my,[],[]) ifsinrs: try: prints.recv(1024) exceptsocket.error: print'socketiserror' exit() #进行对话 deftalk(s): whileTrue: try: info=raw_input('>>>') exceptException: print'can\'tinput' exit() try: s.send(info) exceptException,e: printe exit() #主函数 defmain(): 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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。