//패킷을 생성하는 메소드. 데이터 패킷과 패킷아이디를 적어주면 알아서 합쳐준다. //Send를 하기 전 반드시 해야한다. DataPacket CreatePacket(byte[] msg, P2PPacketId id) { HeaderData header = CreateHeader((short)msg.Length, id); DataPacket packet = new DataPacket(header, msg); return(packet); }
//패킷을 생성하는 메소드. 데이터 패킷과 패킷아이디를 적어주면 알아서 합쳐준다. //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); }
//패킷의 헤더 부분을 생성하는 메소드 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); }
//패킷의 헤더 부분을 생성하는 메소드 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); }
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); }
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; } } } }
//패킷의 헤더 부분을 생성하는 메소드 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); }
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; } } } }