Ejemplo n.º 1
0
    //패킷을 생성하는 메소드. 데이터 패킷과 패킷아이디를 적어주면 알아서 합쳐준다.
    //Send를 하기 전 반드시 해야한다.
    DataPacket CreatePacket(byte[] msg, P2PPacketId id)
    {
        HeaderData header = CreateHeader((short)msg.Length, id);
        DataPacket packet = new DataPacket(header, msg);

        return(packet);
    }
Ejemplo n.º 2
0
    //패킷을 생성하는 메소드. 데이터 패킷과 패킷아이디를 적어주면 알아서 합쳐준다.
    //Send를 하기 전 반드시 해야한다.
    byte[] CreatePacket <T>(IPacket <T> data, P2PPacketId Id)
    {
        byte[] msg    = data.GetPacketData();
        byte[] header = CreateHeader(data, Id);
        byte[] packet = DataHandler.CombineByte(header, msg);

        return(packet);
    }
Ejemplo n.º 3
0
    //패킷의 헤더 부분을 생성하는 메소드
    HeaderData CreateHeader(short msgSize, P2PPacketId id)
    {
        HeaderData       headerData       = new HeaderData();
        HeaderSerializer headerSerializer = new HeaderSerializer();

        headerData.id     = (byte)id;
        headerData.source = (byte)DataHandler.Source.ClientSource;
        headerData.length = (short)msgSize;

        return(headerData);
    }
Ejemplo n.º 4
0
    //패킷의 헤더 부분을 생성하는 메소드
    HeaderData CreateHeader(short msgSize, int source, P2PPacketId id)
    {
        HeaderData       headerData       = new HeaderData();
        HeaderSerializer headerSerializer = new HeaderSerializer();

        headerData.id     = (byte)id;
        headerData.source = (byte)source;
        headerData.length = msgSize;

        return(headerData);
    }
Ejemplo n.º 5
0
    public static byte[] CreateResultPacket(byte[] msg, P2PPacketId Id)
    {
        HeaderData       headerData       = new HeaderData();
        HeaderSerializer HeaderSerializer = new HeaderSerializer();

        headerData.Id     = (byte)Id;
        headerData.source = (byte)DataHandler.Source.ClientSource;
        headerData.length = (short)msg.Length;

        HeaderSerializer.Serialize(headerData);
        msg = DataHandler.CombineByte(HeaderSerializer.GetSerializedData(), msg);
        return(msg);
    }
Ejemplo n.º 6
0
    public void DataHandle()
    {
        if (receiveMsgs.Count != 0)
        {
            //패킷을 Dequeue 한다
            //패킷 : 메시지 타입 + 메시지 내용
            DataPacket packet = receiveMsgs.Dequeue();
            msg        = packet.msg;
            ipEndPoint = packet.endPoint;

            Debug.Log("Dequeue Message Length : " + msg.Length);

            //출처 분리
            byte source = msg[0];

            //타입 분리
            byte[] Id = DataReceiver.ResizeByteArray(1, NetworkManager.packetId, ref msg);

            HeaderData headerData = new HeaderData();

            Debug.Log(source);
            Debug.Log(Id[0]);

            if (source == (byte)Source.ServerSource)
            {
                if (server_notifier.TryGetValue(Id[0], out serverRecvNotifier))
                {
                    ServerPacketId packetId = serverRecvNotifier(msg);
                }
                else
                {
                    Debug.Log("DataHandler::Server.TryGetValue 에러 " + Id);
                    headerData.Id = (byte)ServerPacketId.None;
                }
            }
            else if (source == (byte)Source.ClientSource)
            {
                if (p2p_notifier.TryGetValue(Id[0], out p2pRecvNotifier))
                {
                    P2PPacketId packetId = p2pRecvNotifier(msg);
                }
                else
                {
                    Debug.Log("DataHandler::P2P.TryGetValue 에러 " + Id);
                    headerData.Id = (byte)P2PPacketId.None;
                }
            }
        }
    }
Ejemplo n.º 7
0
    //패킷의 헤더 부분을 생성하는 메소드
    byte[] CreateHeader <T>(IPacket <T> data, P2PPacketId Id)
    {
        byte[] msg = data.GetPacketData();

        HeaderData       headerData       = new HeaderData();
        HeaderSerializer headerSerializer = new HeaderSerializer();

        headerData.Id     = (byte)Id;
        headerData.source = (byte)DataHandler.Source.ClientSource;
        headerData.length = (short)msg.Length;

        headerSerializer.Serialize(headerData);
        byte[] header = headerSerializer.GetSerializedData();

        return(header);
    }
Ejemplo n.º 8
0
    public void DataHandle()
    {
        if (receiveMsgs.Count != 0)
        {
            //패킷을 Dequeue 한다
            //패킷 : 메시지 타입 + 메시지 내용
            DataPacket packet = receiveMsgs.Dequeue();
            msg        = packet.msg;
            ipEndPoint = packet.endPoint;

            Debug.Log("Dequeue Message Length : " + msg.Length);

            if (packet.headerData.source == (byte)Source.ServerSource)
            {
                if (server_notifier.TryGetValue(packet.headerData.id, out serverRecvNotifier))
                {
                    ServerPacketId packetId = serverRecvNotifier(msg);
                }
                else
                {
                    Debug.Log("DataHandler::Server.TryGetValue 에러 " + packet.headerData.id);
                    packet.headerData.id = (byte)ServerPacketId.None;
                }
            }
            else if (packet.headerData.source == (byte)Source.ClientSource)
            {
                if (p2p_notifier.TryGetValue(packet.headerData.id, out p2pRecvNotifier))
                {
                    P2PPacketId packetId = p2pRecvNotifier(msg);
                }
                else
                {
                    Debug.Log("DataHandler::P2P.TryGetValue 에러 " + packet.headerData.id);
                    packet.headerData.id = (byte)P2PPacketId.None;
                }
            }
        }
    }