Python实现群聊天小程序代码
群聊服务端
服务端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] = name
nameList = "已在线聊天的群成员是 %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] + " 说 : "+ data
except socket.error:
data = fd_name[temp] + "离开聊天室"
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代码如下:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
# @Time : 2018/5/18 16:06
# @Desc : 群聊客户端
# @File : Client.py
# @Software: PyCharm import 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 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实现群聊天小程序代码的更多相关文章
- Netty学习——基于netty实现简单的客户端聊天小程序
Netty学习——基于netty实现简单的客户端聊天小程序 效果图,聊天程序展示 (TCP编程实现) 后端代码: package com.dawa.netty.chatexample; import ...
- Python flask构建微信小程序订餐系统✍✍✍
Python flask构建微信小程序订餐系统 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题, ...
- python实现串口通讯小程序(GUI界面)
python实现串口通讯小程序(GUI界面) 使用python实现串口通讯需要使用python的pyserial库来实现,这个库在安装python的时候没有自动进行安装,需要自己进行安装. 1.安装p ...
- python爬取微信小程序(实战篇)
python爬取微信小程序(实战篇) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90452656 展开 一.背景介绍 近期有需求需要抓 ...
- 类似微信聊天小程序-网易云信,IM DEMO小程序版本
类似微信聊天小程序-网易云信,IM DEMO小程序版本 代码地址: https://github.com/netease-im/NIM_Web_Weapp_Demo 云信IM DEMO 小程序版本 ( ...
- 小程序代码包压缩 策略&方案
微信小程序自推出以来,逐渐发展,目前正受到越来越多的青睐.其中很重要的一点得益于小程序的轻量级特性,每个小程序最多不超过2MB,招之即来挥之即去,相比于几十上百兆的APP,用户进入小程序,或者说,小程 ...
- 微信小程序代码构成
一.小程序代码 app.json 是当前小程序的全局配置,包括了小程序的所有页面路径.界面表现.网络超时时间.底部tab等. { "pages":[ "pages/ind ...
- [Socket]Socket聊天小程序
一个简单是Socket聊天小程序,读写操作在不同的线程中.服务器端采用线程池. 1.Server import java.io.IOException; import java.net.ServerS ...
- Netty 聊天小程序
这节讲解基于 Netty 快速实现一个聊天小程序. 一.服务端 1. SimpleChatServerHandler(处理器类) 该类主要实现了接收来自客户端的消息并转发给其他客户端. /** * 服 ...
随机推荐
- Python 3.8.0 正式版发布,新特性初体验
北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PEP 572: Assignment Expressi ...
- 【Java 基础】你听说过JMX么
目录 什么是JMX 相关概念 MBean代码示例 MBean本地连接 MBean远程连接 通过Spring发布MBean 消息订阅发布 参考 什么是JMX JMX(Java管理扩展),是一套给应用程序 ...
- python selenium之CSS定位
ccs的优点:css相对xpath语法比xpath简洁,定位速度比xpath快 css的缺点:css不支持用逻辑运算符来定位,而xpath支持.css定位语法形式多样,相对xpath比较难记. css ...
- 权限维持-wmi事件
0x01 前言 WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具),提供了从命令行接口和批命令脚本执行系统管理的支持. 在2015年的b ...
- PHP7源码之array_unique函数分析
以下源码基于 PHP 7.3.8 array array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) (PHP 4 >= ...
- API 网关的选型和持续集成
2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·成都站,APISIX 作者温铭在活动上做了< API 网关的选 ...
- [JZOJ5778]【NOIP提高A组模拟2018.8.8】没有硝烟的战争
Description 被污染的灰灰草原上有羊和狼.有N只动物围成一圈,每只动物是羊或狼.该游戏从其中的一只动物开始,报出[1,K]区间的整数,若上一只动物报出的数是x,下一只动物可以报[x+1,x+ ...
- libevent::事件::定时器
#include <cstdio> #include <errno.h> #include <sys/types.h> #include <event.h&g ...
- 关于a标签的href属性
今天有人问起我a标签的href属性值为 # 与 JavaScript:void(0) 有啥区别,想来也没啥可说,就简单说两句 a标签的href属性,优点有: 天然鼠标手型,以及可以被键盘focus以及 ...
- python 2.x中的中文
先不管一大堆的中文显示的原理,在这里记录下正确显示中文的方式,便于以后的查阅和深入学习. 方法1 a = {} a["哈哈哈"] = "啦啦啦啦啦啦啦" s1 ...