本文实例为大家分享了Python基于Socket实现简单聊天室,供大家参考,具体内容如下
服务端
#!/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实现简单聊天室,包括了Python socket实现简单聊天室的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python socket实现简单聊天室的具体代码,供大家参考,具体内容如下 服务端使用了select模块,实现了对多个socket的监控。客户端由于select在Windows下只能对socket使用,所以使用了多线程来实现对客户端输
本文向大家介绍Android基于socket实现的简单C/S聊天通信功能,包括了Android基于socket实现的简单C/S聊天通信功能的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android基于socket实现的简单C/S聊天通信功能。分享给大家供大家参考,具体如下: 主要想法:在客户端上发送一条信息,在后台开辟一个线程充当服务端,收到消息就立即回馈给客户端。 第一步:创建一个继
本文向大家介绍python实现简单多人聊天室,包括了python实现简单多人聊天室的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现多人聊天室的具体代码,供大家参考,具体内容如下 刚开始学习python,写了一个聊天室练练手。 Server.py client.py 运行时先启动服务端。进入聊天室先起一个昵称。服务端会向客户端发送当前聊天室内聊天人的列表。一个客户端发出
本文向大家介绍HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天,包括了HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天的使用技巧和注意事项,需要的朋友参考一下 1、什么是WebSocket? WebSocket 是一种自然的全双工、双向、单套接字连接。使用WebSocket,你的HTTP 请求变成打开WebSocket 连接(WebS
本文向大家介绍基于swoole实现多人聊天室,包括了基于swoole实现多人聊天室的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了swoole创建多人多房间聊天室的具体代码,供大家参考,具体内容如下 核心的swoole代码 基本的cs(client-sercer)结构不变,这里利用的是redis的哈希和set来储存和分组;从而达到了分组,统计,定时推送等功能;最后利用onclose事
我正在用插座找一个指定的房间。io,但其给出的错误为“未定义房间”。下面是我的代码。谁能帮忙吗?或者解释什么问题 });