Python基于Socket实现简单聊天室
来源:互联网 发布:php视频网站源码 编辑:程序博客网 时间:2024/06/04 00:55
Python基于Socket实现简单聊天室
服务端
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2017/7/27 15:34# @File : Server.py"""聊天室服务端"""import socket,selecthost=''port=7799addr=(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 socketimport selectimport threadinghost='127.0.0.1'port=7799addr=(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()
阅读全文
0 0
- Python基于Socket实现简单聊天室
- 基于socket---简单聊天室的实现
- Socket实现简单聊天室
- Python实现简单聊天室
- java Socket实现简单聊天室
- 简单聊天室socket.io实现
- java基于socket tcp的简单聊天室
- C#基于Socket的简单聊天室实践
- 基于socket的聊天室实现原理
- 基于Socket的聊天室实现原理
- 基于Socket的聊天室实现原理
- 基于Socket的聊天室实现原理
- 基于Socket的聊天室实现原理
- 基于Socket的聊天室实现原理
- 基于Socket的聊天室实现原理
- 基于Socket的聊天室实现原理
- 基于Socket的聊天室实现原理
- 基于Socket的聊天室实现原理
- ubuntu上wps字体缺失错误解决
- NLP工具自己使用记录(ICTCLAS2016)
- ORA-03113: end-of-file on communication channel
- Less(一)
- Applition全局捕获异常
- Python基于Socket实现简单聊天室
- 链表面试题
- 剑指offer 之 重建二叉树
- 1:JAVA常识
- Android EventBus源码解析 带你深入理解EventBus
- mysql 用户管理和权限设置
- 数据结构之队列顺序表示与实现2
- 集群+后端存储
- js的属性操作-判断