python实现简单多人聊天室


Posted in Python onDecember 11, 2018

本文实例为大家分享了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()

运行时先启动服务端。进入聊天室先起一个昵称。服务端会向客户端发送当前聊天室内聊天人的列表。一个客户端发出的消息会通过服务端发给其他客户端。

效果如下:

python实现简单多人聊天室

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用Redis实现作业调度系统(超简单)
Mar 22 Python
TensorFlow saver指定变量的存取
Mar 10 Python
Python实现基于C/S架构的聊天室功能详解
Jul 07 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
python一键去抖音视频水印工具
Sep 14 Python
详解Django的CSRF认证实现
Oct 09 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
python生成特定分布数的实例
Dec 05 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
Python 操作 MySQL数据库
Sep 18 Python
用python-webdriver实现自动填表的示例代码
Jan 13 Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 #Python
python 划分数据集为训练集和测试集的方法
Dec 11 #Python
Python sklearn KFold 生成交叉验证数据集的方法
Dec 11 #Python
想学python 这5本书籍你必看!
Dec 11 #Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
Dec 11 #Python
Python3爬虫学习入门教程
Dec 11 #Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
Dec 11 #Python
You might like
PHP 输出缓存详解
2009/06/20 PHP
php自定义函数实现统计中文字符串长度的方法小结
2017/04/15 PHP
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
2018/09/01 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
2018/09/13 Javascript
vue实现购物车列表
2020/06/30 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
用pickle存储Python的原生对象方法
2017/04/28 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
python 基于opencv去除图片阴影
2021/01/26 Python
深入剖析HTML5 内联框架iFrame
2016/05/04 HTML / CSS
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
技能竞赛活动方案
2014/02/21 职场文书
刊首寄语大全
2014/04/11 职场文书
排查整治工作方案
2014/06/09 职场文书
设计师求职信
2014/07/01 职场文书
2015军训通讯稿大全
2015/07/18 职场文书
学雷锋活动简报
2015/07/20 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
Python机器学习之逻辑回归
2021/05/11 Python