多人聊天室具体步骤
Posted zc110
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多人聊天室具体步骤相关的知识,希望对你有一定的参考价值。
多人聊天室具体步骤
- 制作协议报头,响应数据,制定一个模块config.py
# ----数据协议相关配置-----
REQUEST_LOGIN=‘0001‘ #登录请求
REQUEST_CHAT=‘0002‘ # 请求聊天
REQUEST_LOGIN_RESULT=‘1001‘ # 登录结果响应
RESPONSE_CHAT=‘1002‘ # 聊天响应
DELIMITER=‘|‘ # 自定义协议数据分隔符
- 处理服务器响应字符串的拼接
from config import *
class ResponseProtocol(object):
""" 服务器响应协议的格式字符串处理"""
@staticmethod
def response_login_result(result,nickname,username):
"""
返回生成用户登录的结果字符串
:param result: 登录结果,0表示失败,1表示成功
:param nickname: 登录用户的昵称,登陆失败为空
:param username:登录用户的账号,如果失败为空
:return:返回给用户登录结果协议字符串
"""
return DELIMITER.join([REQUEST_LOGIN_RESULT],result,nickname,username)
@staticmethod
def response_chat(nicakname,messages): #这里是服务器发送给客户端的消息 转发的消息
"""
生成返回给用户的消息字符串
:param nicakname:发送消息的用户昵称
:param messages:消息正文
:return:返回给用户的消息字符串
"""
return DELIMITER.join(RESPONSE_CHAT,nicakname,messages)
主体框架搭建
server.py 模块定义Server类来处理服务器业务逻辑,该类实现了服务器的主体框架
import socket
from config import *
class ServerSocket(socket.socket):
"""自定义套接字,负责初始化服务器套接字需要的相关参数"""
def __init__(self):
# 设置为tcp类型
super(ServerSocket,self).__init__(socket.AF_INET,socket.SOCK_STREAM)
# 绑定地址和端口
self.bind((SERVER_IP,SERVER_PORT))
# 监听端口
self.listen(128)
这里我们自定义一个套接字,让类继承socket ,super找父类的套接字有一个初始化,不初始化的类型告诉他 super(ServerSocket,self).__init__(socket.AF_INET,socket.SOCK_STREAM)
,绑定地址和端口,这里的参数不能写死 以为你要是写死,以后你要改代码要找一大堆的代码,这里我们把它固定在config.py 里面,以后要想改直接到配置相关项去改, 初始化服务器套接字需要的相关操作。
等待后续更新
以上是关于多人聊天室具体步骤的主要内容,如果未能解决你的问题,请参考以下文章