コード例 #1
0
        void SendData(IPacket packet, NetworkConnection connection)
        {
            var writer = new DataStreamWriter(BufferSize, Allocator.Temp);

            writer.Write((ushort)packet.GetPacketType());
            packet.ToStream(ref writer);
            m_Driver.Send(NetworkPipeline.Null, connection, writer);
        }
コード例 #2
0
        public bool DefaultRun(IPacket packet)
        {
            PacketType type = (PacketType)packet.GetPacketType();

            // todo: 공통 처리
            // switch(type) {
            //}
            return(false);
        }
コード例 #3
0
ファイル: NetPacket.cs プロジェクト: r3eckon/EZNet
 public static byte[] GenerateHeader(byte cid, IPacket p)
 {
     byte[] toret = new byte[5];
     toret[0] = (byte)((p.GetLength() + HEADERSIZE) << 8 >> 8);
     toret[1] = (byte)((p.GetLength() + HEADERSIZE) >> 8);
     toret[2] = cid;
     toret[3] = p.GetPacketType();
     toret[4] = p.GetID();
     return(toret);
 }
コード例 #4
0
        public void Send(IPacket packet)
        {
            if (IsConnected == false)
            {
                Debug.LogError("Please Connect First!!");
                return;
            }

//            ClearBuffer();
            byte[] sendBuffer = PacketSerializer.Serialize(packet);
            _networkStream.Write(sendBuffer, 0, sendBuffer.Length);
            Debug.Log("[Send] name: " + packet.GetPacketType());
        }
コード例 #5
0
        public override void SendData(IPacket packet)
        {
            if (!connected)
            {
                Debug.LogError("NotConnectedToServer");
                return;
            }

            var writer = new DataStreamWriter(BufferSize, Allocator.Temp);

            writer.Write((ushort)packet.GetPacketType());
            packet.ToStream(ref writer);
            m_clientToServerConnection.Send(m_Driver, writer);
        }
コード例 #6
0
        public override void OnReceive(IPacket packet)
        {
            PacketType packetType = packet.GetPacketType();

            if (packetHandler.ContainsKey(packetType) == false)
            {
                Console.Error.WriteLine($"Not Found Packet Handler (packetType: {packetType.ToString()})");
                return;
            }

        #if DEBUG
            Console.WriteLine($"received {packetType.ToString()}");
        #endif

            packetHandler[packetType]?.Invoke(packet);
        }
コード例 #7
0
        public override void Run(IPacket packet)
        {
            PacketType type = (PacketType)packet.GetPacketType();

            switch (type)
            {
            case PacketType.E_S_ANS_CHAT:
                Contents.ReceiveChat(packet);
                return;
            }
            if (base.DefaultRun(packet) == false)
            {
#if DEBUG
                MessageBox.Show("잘못된 패킷이 수신되었습니다: " + type.ToString(), "error", MessageBoxButtons.OK);
                Application.Exit();
#endif
            }
        }
コード例 #8
0
    public int SendUdp(int node, IPacket packet)
    {
        int sendSize = 0;

        if (sessionUdp == null)
        {
            return(sendSize);
        }

        PacketHeader           header           = new PacketHeader();
        PacketHeaderSerializer headerSerializer = new PacketHeaderSerializer();

        header.type = packet.GetPacketType();

        byte[] headerData = null;
        if (headerSerializer.Serialize(header) == true)
        {
            headerData = headerSerializer.GetSerializedData();
        }

        byte[] packetData = packet.GetData();

        byte[] data = new byte[headerData.Length + packetData.Length];

        int headerSize = Marshal.SizeOf(typeof(PacketHeader));

        Buffer.BlockCopy(headerData, 0, data, 0, headerSize);
        Buffer.BlockCopy(packetData, 0, data, headerSize, packetData.Length);

        sendSize = sessionUdp.Send(node, data, data.Length);

        if (sendSize < 0 && nodeStateHandler != null)
        {
            NetworkState state = new NetworkState();
            state.node   = node;
            state.type   = NetEventType.SendError;
            state.result = NetEventResult.Failure;
            nodeStateHandler.Invoke(ConnectionType.UDP, state);
        }

        return(sendSize);
    }
コード例 #9
0
ファイル: PacketFormat.cs プロジェクト: 329258385/War-of-Free
        // 组装这个包
        public void GenerateBuffer(ref Byte[] dest, IPacket packet)
        {
            Byte[] data    = packet.GetData();
            int    iLength = GetLength(data.Length); // 数据自动加 8 分别存储 消息长度和消息类型

            dest = new Byte[iLength];

            // 长度
            Byte[] bLength = BitConverter.GetBytes(System.Net.IPAddress.HostToNetworkOrder(iLength - 4));
            Array.Copy(bLength, 0, dest, 0, 4);

            // 类型
            int iType = packet.GetPacketType();

            Byte[] bType = BitConverter.GetBytes(iType);
            Array.Copy(bType, 0, dest, 4, 4);

            // 数据
            Array.Copy(data, 0, dest, 8, data.Length);
        }
コード例 #10
0
ファイル: PacketFormat.cs プロジェクト: AlkaidFang/Rosetta
        // 组装这个包
        public void GenerateBuffer(ref Byte[] dest, IPacket packet)
        {
            Byte[] data = packet.GetData();
            int iLength = GetLength(data.Length);

            dest = new Byte[iLength];

            // 包头
            Array.Copy(PACKET_HEAD, 0, dest, 0, 2);

            // 长度
            Byte[] bLength = BitConverter.GetBytes(iLength);
            Array.Copy(bLength, 0, dest, 2, 4);

            // 类型
            int iType = packet.GetPacketType();
            Byte[] bType = BitConverter.GetBytes(iType);
            Array.Copy(bType, 0, dest, 6, 4);

            // 数据
            Array.Copy(data, 0, dest, 10, data.Length);
        }
コード例 #11
0
ファイル: PacketFormat.cs プロジェクト: gaolijunGit/Rosetta
        // 组装这个包
        public void GenerateBuffer(ref Byte[] dest, IPacket packet)
        {
            Byte[] data    = packet.GetData();
            int    iLength = GetLength(data.Length);

            dest = new Byte[iLength];

            // 包头
            Array.Copy(PACKET_HEAD, 0, dest, 0, 2);

            // 长度
            Byte[] bLength = BitConverter.GetBytes(iLength);
            Array.Copy(bLength, 0, dest, 2, 4);

            // 类型
            int iType = packet.GetPacketType();

            Byte[] bType = BitConverter.GetBytes(iType);
            Array.Copy(bType, 0, dest, 6, 4);

            // 数据
            Array.Copy(data, 0, dest, 10, data.Length);
        }
コード例 #12
0
        public void Send(IPacket packet)
        {
            lock (locker)
            {
                if (state.Compare(State.Disconnecting))
                {
                    return;
                }

            #if DEBUG
                Console.WriteLine($"received {packet.GetPacketType().ToString()}");
            #endif

                byte[] sendBuffer = PacketSerializer.Serialize(packet);
                socketEventProvider.SendEvent.SetBuffer(sendBuffer, 0, sendBuffer.Length);

                bool willRaiseEvent = socket.SendAsync(socketEventProvider.SendEvent);
                if (willRaiseEvent == false)
                {
                    socketEventProvider.ProcessSend(socketEventProvider.SendEvent);
                }
            }
        }
コード例 #13
0
        public static byte[] Serialize(IPacket packet)
        {
            PacketType packetType = packet.GetPacketType();

            byte[] bodyBytes         = packet.Serialize();
            byte[] packetTypeBytes   = BitConverter.GetBytes((int)packetType);
            byte[] packetLengthBytes = BitConverter.GetBytes((int)bodyBytes.Length);

            int length = packetTypeBytes.Length + packetLengthBytes.Length + bodyBytes.Length;

            byte[] packetBytes = new byte[length];
            int    offset      = 0;

            Buffer.BlockCopy(packetTypeBytes, 0, packetBytes, offset, packetTypeBytes.Length);
            offset += packetTypeBytes.Length;

            Buffer.BlockCopy(packetLengthBytes, 0, packetBytes, offset, packetLengthBytes.Length);
            offset += packetLengthBytes.Length;

            Buffer.BlockCopy(bodyBytes, 0, packetBytes, offset, bodyBytes.Length);

            return(packetBytes);
        }