多人聊天室具体步骤

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 里面,以后要想改直接到配置相关项去改, 初始化服务器套接字需要的相关操作。
等待后续更新


以上是关于多人聊天室具体步骤的主要内容,如果未能解决你的问题,请参考以下文章

网络编程项目—— 多人聊天室->双人聊天

网络编程项目—— 多人聊天室->双人聊天

手把手搭建WebSocket多人在线聊天室

nio 代码实现简易多人聊天

Java网络编程系列之基于BIO的多人聊天室设计与实现

需求说明书2.0