python实现简单多人聊天室
作者:dk_zhe 时间:2022-08-17 15:04:13
本文实例为大家分享了python实现多人聊天室的具体代码,供大家参考,具体内容如下
刚开始学习python,写了一个聊天室练练手。
Server.py
import socket,select,thread;
host=socket.gethostname()
port=5963
addr=(host,port)
inputs=[]
fd_name={}
def who_in_room(w):
name_list=[]
for k in w:
name_list.append(w[k])
return name_list
def conn():
print 'runing'
ss=socket.socket()
ss.bind(addr)
ss.listen(5)
return ss
def new_coming(ss):
client,add=ss.accept()
print 'welcome %s %s' % (client,add)
wel='''welcome into the talking room .
please decide your name.....'''
try:
client.send(wel)
name=client.recv(1024)
inputs.append(client)
fd_name[client]=name
nameList="Some people in talking room, these are %s" % (who_in_room(fd_name))
client.send(nameList)
except Exception,e:
print e
def server_run():
ss=conn()
inputs.append(ss)
while True:
r,w,e=select.select(inputs,[],[])
for temp in r:
if temp is ss:
new_coming(ss)
else:
disconnect=False
try:
data= temp.recv(1024)
data=fd_name[temp]+' say : '+data
except socket.error:
data=fd_name[temp]+' leave the room'
disconnect=True
if disconnect:
inputs.remove(temp)
print data
for other in inputs:
if other!=ss and other!=temp:
try:
other.send(data)
except Exception,e:
print e
del fd_name[temp]
else:
print data
for other in inputs:
if other!=ss and other!=temp:
try:
other.send(data)
except Exception,e:
print e
if __name__=='__main__':
server_run()
client.py
import socket,select,threading,sys;
host=socket.gethostname()
addr=(host,5963)
def conn():
s=socket.socket()
s.connect(addr)
return s
def lis(s):
my=[s]
while True:
r,w,e=select.select(my,[],[])
if s in r:
try:
print s.recv(1024)
except socket.error:
print 'socket is error'
exit()
def talk(s):
while True:
try:
info=raw_input()
except Exception,e:
print 'can\'t input'
exit()
try:
s.send(info)
except Exception,e:
print e
exit()
def main():
ss=conn()
t=threading.Thread(target=lis,args=(ss,))
t.start()
t1=threading.Thread(target=talk,args=(ss,))
t1.start()
if __name__=='__main__':
main()
运行时先启动服务端。进入聊天室先起一个昵称。服务端会向客户端发送当前聊天室内聊天人的列表。一个客户端发出的消息会通过服务端发给其他客户端。
效果如下:
来源:https://blog.csdn.net/dk_zhe/article/details/37820965
标签:python,聊天室
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
ASP环境中使用QQ纯真版IP数据库QQWry.dat
2010-02-26 13:35:00
asp文章中随机插入网站版权文字的实现代码
2011-04-15 11:11:00
Oracle存储过程之数据库中获取数据实例
2009-03-04 10:57:00
jQuery实现同一点击,两个不同链接,指向两个不同的iframe
2010-06-21 10:52:00
图文详解vscode配置运行php项目完整版
2023-05-28 22:56:03
![](https://img.aspxhome.com/file/2023/7/55347_0s.png)
python运行cmd命令行的3种方法总结
2023-07-15 18:40:49
正则表达式结合数组提取文章中的文件名
2007-10-12 13:59:00
url地址栏加密和解密函数 Base64
2008-07-10 13:29:00
页面设计之个性元素与共性元素
2008-07-17 12:36:00
![](https://img.aspxhome.com/file/UploadPic/20087/17/200871712436841s.jpg)
JSP实现客户信息管理系统
2023-06-30 05:32:36
![](https://img.aspxhome.com/file/2023/9/61349_0s.png)
SQL语句操作主从关系表
2011-06-19 13:19:05
如何在SQL2000的查询中使用XML-Data?
2010-06-18 19:26:00
python批量修改交换机密码的示例
2023-06-29 07:52:42
asp三天学好ADO对象之第一天
2008-10-09 12:46:00
Dreamweaver初学者常见问题解答
2007-02-03 11:39:00
Mootools 1.2教程(11)——Fx.Morph、Fx选项和Fx事件
2008-12-04 16:03:00
PHP抓取及分析网页的方法详解
2023-11-24 08:17:10
一个二级伸缩下拉菜单代码
2008-06-24 18:12:00
Safari参考样式库之webkit
2009-07-26 09:50:00
![](https://img.aspxhome.com/file/UploadPic/20097/26/webkit1-13s.jpg)
如何在python中使用selenium的示例
2023-07-15 20:52:09