群聊服务端

服务端Server.py代码如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python
# @Time    : 2018/5/18 16:05
# @Desc    : 群聊服务端
# @File    : Server.py
# @Software: PyCharm
import socket, select
host = socket.gethostname()
port = 5999
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 "服务端开始运行"ss = socket.socket()ss.bind(addr)ss.listen(5)return ss"""
添加新的群成员
"""
def new_coming(ss):client, add = ss.accept()print '欢迎 %s %s' % (client, add)wel = '''欢迎进入聊天室 . 请输入你的名字:'''try:client.send(wel)name = client.recv(1024)inputs.append(client)fd_name[client] = namenameList = "已在线聊天的群成员是 %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 = Falsetry:data = temp.recv(1024)data = fd_name[temp] + " 说 : "+ dataexcept socket.error:data = fd_name[temp] + "离开聊天室"disconnect = Trueif disconnect:inputs.remove(temp)print datafor other in inputs:if other != ss and other != temp:try:other.send(data)except Exception, e:print edel fd_name[temp]else:print datafor other in inputs:if other != ss and other != temp:try:other.send(data)except Exception, e:print eif __name__ == '__main__':server_run()

群聊客户端

客户端Client.py代码如下:

# -*- coding: utf-8 -*-
#!/usr/bin/env python
# @Time    : 2018/5/18 16:06
# @Desc    : 群聊客户端
# @File    : Client.py
# @Software: PyCharmimport socket, select, threading
host = socket.gethostname()
addr = (host, 5999)"""
连接
"""
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 "通信出现异常"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 eexit()"""
主函数,创建聊天和获取群成员线程
"""
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实现群聊天小程序代码相关推荐

  1. python socket能做什么_用python写一个聊天小程序!和女朋友的专属聊天工具!

    原标题:用python写一个聊天小程序!和女朋友的专属聊天工具! 1.UDP简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP).UDP为应用程序提供了无需建立就可 ...

  2. 用python写一个聊天小程序!和女朋友的专属聊天工具!

    1.UDP简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP).UDP为应用程序提供了无需建立就可以发送封装的IP数据包的方法. PS:如有需要Python学习资料 ...

  3. python用程序说爱你_用python写一个聊天小程序!和女朋友的专属聊天工具!

    1.UDP简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP).UDP为应用程序提供了无需建立就可以发送封装的IP数据包的方法. Internet的传输层有两个协议 ...

  4. python快递分拣小程序_python英语单词测试小程序代码实例

    这篇文章主要简介了python英语单词测试小程序代码实例,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 爬取了扇贝英语网,并制作了一个英语单词测试 ...

  5. python测试代码_python英语单词测试小程序代码实例

    这篇文章主要介绍了python英语单词测试小程序代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 爬取了扇贝英语网,并制作了一个英语单词测试的 ...

  6. python软件代码示例-用Python写一个模拟qq聊天小程序的代码实例

    Python 超简单的聊天程序 客户端: import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput des ...

  7. 能不能用python开发qq_用Python写一个模拟qq聊天小程序的代码实例

    用Python写一个模拟qq聊天小程序的代码实例 发布时间:2020-09-09 07:49:29

  8. 用Python写一个模拟qq聊天小程序的代码实例

    前言 今天小编就为大家分享一篇关于用Python写一个模拟qq聊天小程序的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 Python 超简单的聊天 ...

  9. python聊天程序_python实现聊天小程序

    本文实例为大家分享了python实现聊天小程序的具体代码,供大家参考,具体内容如下 我这里实现的是客户端与服务端进行通信的功能,比较简单,与上一篇文章的群聊不太一样. 服务端server.py #-* ...

最新文章

  1. Oracle 表空间的段管理
  2. 【分享】关于对象关系映射的理解
  3. hadoop hbase java_Hadoop、Hbase伪分布式安装
  4. linux 添加samba账户
  5. Ubuntu 14.04LTS 环境下安装UliPad
  6. 计算机分子模拟聚乙烯,聚乙烯结晶及拉伸过程的分子动力学模拟
  7. 小度wifi当无线网卡
  8. 毕设第十周工作报告和第十一周安排
  9. 国土空间用途管制制度构建的思考
  10. 《JavaScript百炼成仙》 全书知识点整理
  11. 物联网技术周报第 103 期: DIY 智能音箱:基于 Raspberry Pi + Snowboy + AVS
  12. 使用Dreamweaver创建一个PHP程序
  13. 【机器学习】吴恩达机器学习Deeplearning.ai
  14. iOS开发人员必看的精品资料(100个)——下载目录
  15. 再获认可!人大金仓金融信创优秀解决方案推进我国数字金融高质量发展
  16. VueCli脚手架的使用详解
  17. 深耕MySQL - MySQL必知必会
  18. 我用rpgmaker mv制作插件版牧场游戏范例
  19. 【技术篇】文件的md5值
  20. linux屏幕录像的方案

热门文章

  1. UG\NX二次开发 获取装配根节点的两种方式
  2. 用 Python 自动获取NBA现役球员的职业生涯数据曲线
  3. php教程--案例13(员工信息搜索)
  4. hdu 3413 poj 3778 Single CPU, multi-tasking
  5. 4万字详解C语言标准库
  6. 工作小技巧20181101
  7. DELPHI 函数集
  8. 支持保障岗位,如何刷职场存在感
  9. 数学建模清风微信公众号的习题答案(挑战篇1)
  10. 利用MATLAB绘制Bezier曲线