Unity【Multiplayer 多人在线】- Socket 通用客户端网络模块(四)、Close 关闭连接

介绍

        在阅读了罗培羽著作的Unity3D网络游戏实战一书后,博主综合自己的开发经验与考虑进行部分修改和调整,将通用的客户端网络模块和通用的服务端框架进行提取,形成专栏,介绍Socket网络编程,希望对其他人有所帮助。目录如下:

一、通用服务端框架

        (一)、定义套接字和多路复用​​​​​​

        (二)、客户端信息类和通用缓冲区结构

        (三)、Protobuf 通信协议

        (四)、数据处理和关闭连接

        (五)、Messenger 事件发布、订阅系统

        (六)、单点发送和广播数据

        (七)、时间戳和心跳机制

二、通用客户端网络模块

        (一)、Connect 连接服务端

        (二)、Receive 接收并处理数据

        (三)、Send 发送数据

        (四)、Close 关闭连接

本篇内容:

Close 关闭连接:

        封装关闭连接的函数,首先进行状态的判断,如果socket为空或着没有连接,return;如果正在连接,return;判断如果还有数据正在发送,将isClosing标志位设为true,否则关闭socket,并发布消息:

/// <summary>
/// 关闭连接
/// </summary>
public static void Close()
{
    //状态判断
    if (socket == null || !socket.Connected) return;
    if (isConnecting) return;
    //还有数据在发送
    if (writeQueue.Count > 0)
    {
        isClosing = true;
    }
    //没有数据在发送
    else
    {
        socket.Close();
        Messenger.Publish("关闭连接");
    }
}

参考资料:《Unity3D网络游戏实战》(第2版)罗培羽 著

猜你喜欢

转载自blog.csdn.net/qq_42139931/article/details/124094895