Python +redis 聊天室
来源:互联网 发布:ad软件怎么安装 编辑:程序博客网 时间:2024/05/18 03:51
1、Service.py
# encoding=utf-8# 载入模块from socket import * import json, time, threadingimport structfrom urllib import unquote"""1、客服端与服务端建立连接2、把客户端的链接存入redis中3、客户端与客户端通过对方链接进行通信4、实现对话优化"""config = { 'HOST': 'localhost', 'PORT': 11011, 'LISTEN_CLIENT': 50, 'KEY': '391f10fadc339e9ec5fa15af60030ac1', 'SIZE': 2048, 'TIME_OUT': 1000, 'HEART_TIME': 5, 'MAGIC_STRING': '258EAFA5-E914-47DA-95CA-C5AB0DC85B11', 'HANDSHAKE_STRING': "HTTP/1.1 101 Switching Protocols\r\n" "Upgrade:websocket\r\n" "Connection: Upgrade\r\n" "Sec-WebSocket-Accept: {1}\r\n" "WebSocket-Location: ws://{2}/chat\r\n" "WebSocket-Protocol:chat\r\n\r\n" }class Service(): """ 服务端基类 """ def __init__(self): #1、第一步建立链接参数 self.sock = socket(AF_INET,SOCK_STREAM) #2、绑定指定地址 self.sock.bind((config['HOST'], config['PORT'])) #3、监听请求,超过链接数拒绝请求 self.sock.listen(config['LISTEN_CLIENT']) # 所有监听的客户端 self.clients = {} self.thrs = {} self.users = {} self.stops = [] #print(sock.recv(1024).decode()) print u"\n正在监听链接请求..." def listen_client(self): while True: # 4、循环监听,接收请求链接 connection,addr = self.sock.accept() print "\n客服端链接ip地址为: " print "\n",addr address = addr[0] + ':' + str(addr[1]) # ip:port global ip,port ip = addr[0] #print ip port = str(addr[1]) #print port self.redis() try: connection.settimeout(5) # 握手,判断客服端是A还是B,也可以根据频道来广播 buf = connection.recv(1024) if buf == 'A': connection.send('A send massage welcome to python server!')#给链接客服端发送消息 else: connection.send('B send massage please go out!') except socket.timeout: print 'time out' connection.close() #self.sock.close() headers = {} #print u'\n服务端发送的信息:', address header, data = buf.split('\r\n\r\n', 1) def redis(self): import redis print "\nredis oss...." # 链接redis数据库 r = redis.Redis(host='localhost', port=6379, db=0) # 往redis中写数据 r.set('ip',ip) r.set('port',port) print "\nip:",(r.get('ip')),"port:",(r.get('port'))if __name__ == '__main__': c = Service() c.listen_client()
2、Client.py
# encoding=utf-8# 载入模块from socket import * import json, time, threadingimport structfrom urllib import unquote"""1、客服端与服务端建立连接2、把客户端的链接存入redis中3、客户端与客户端通过对方链接进行通信4、实现对话优化"""class Client(): def __init__(self): self.sock = socket(AF_INET, SOCK_STREAM) self.sock.connect(('localhost', 11011)) self.sock.send(b'B')#发送一个1 print(self.sock.recv(1024).decode()) print u"\n已建立连接..." self.sock.close() if __name__ == '__main__': c = Client()
3、Redis.py
操作Redis的一些方法
# encoding=utf-8# 载入模块import redis# 链接redis数据库r = redis.Redis(host='localhost', port=6379, db=0)# 往redis中写数据r.set('hello','world')print(r.get('hello'))r.set('Key', 'value')# 查看对应的值print 'Key', r.get('Key')r['diaosi'] = 'yy'r.set('xueba', 'xuexi')r['xuezha'] = 'wan'print (r.get('xuezha'))# 查看数据库中有多少个key,多少条数据print r.dbsize()# 将数据保存到硬盘中(保存时阻塞)r.save()# 查看键值是否存在print "是否存在结果为:",r.exists("doubi")# 列出所有键值print "列出所有键值",r.keys()# 删除键值对应的数据print r.delete('diaosi')print r.delete('xuezha')# 删除当前数据库所有数据r.flushdb()
阅读全文
0 0
- Python +redis 聊天室
- 使用python和redis实现实时聊天室
- Python聊天室
- Python聊天室
- Redis实现多人多聊天室
- Redis实现多人多聊天室功能
- Redis实战之多用户聊天室
- Python聊天室程序---基础
- Python聊天室程序----界面设计
- Python聊天室程序-----美化
- Python socket聊天室程序
- Python socket聊天室程序
- 小小聊天室 Python实现
- Python实现简单聊天室
- Java websocket + redis 实现多人单聊天室,多人多聊天室, 一对一聊天
- python socket 多人聊天室
- python socket多人聊天室
- 基于Redis的PHP聊天室程序
- 继承 构造函数
- Copying Books (二分法)
- 关于if里面条件的面试题
- WPF Image控件显示网络图片
- Spring的Bean之设置Bean值
- Python +redis 聊天室
- 笨办法学 Python · 续 练习 28:`sh`
- RecycleViewItem拖拽
- 今天开通个人博客,值得祝贺!
- 【真题】京东2017校招编程题 集合
- FIDO U2F Message协议介绍
- Java9种基本数据类型分析
- UITableViewStyleGrouped类型下去掉头部空白
- Closest