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,聊天室
0
投稿
猜你喜欢
python的scipy.stats模块中正态分布常用函数总结
2021-06-26 16:03:04
Python数据分析 Pandas Series对象操作
2021-07-17 20:18:52
numpy中实现ndarray数组返回符合特定条件的索引方法
2023-04-21 06:21:53
JavaScript中的对象的extensible属性介绍
2024-06-05 09:30:38
实例演示在SQL中启用全文检索
2011-10-01 14:01:37
Python常问的100个面试问题汇总(下篇)
2023-09-23 06:30:29
用户体验的误解
2008-07-15 12:31:00
python基础教程之实现石头剪刀布游戏示例
2022-02-09 15:41:11
Python实现数字图像处理染色体计数示例
2022-06-15 03:32:36
pytorch加载自己的数据集源码分享
2023-04-16 08:46:09
python 获取图片分辨率的方法
2022-02-19 12:03:56
Python 自动化表单提交实例代码
2022-12-20 06:16:14
python+pytest接口自动化参数关联
2021-07-06 09:43:55
SqlServer参数化查询之where in和like实现详解
2012-05-22 18:10:50
JavaScript实现相册弹窗功能(zepto.js)
2024-04-19 10:42:49
python将字符串list写入excel和txt的实例
2022-02-28 05:07:01
解决Python数据可视化中文部分显示方块问题
2021-01-27 03:53:36
Oracle计算时间差常用函数
2024-01-22 11:08:32
python实现串口自动触发工作的示例
2023-11-06 22:19:09
python调用摄像头的示例代码
2021-10-11 02:18:09