예제 #1
0
    void ProcessPackets()
    {
        for (; ;)
        {
            NetIncomingMessage msg = server.ReadMessage();
            if (msg == null)
            {
                return;
            }
            switch (msg.Type)
            {
            case NetworkMessageType.Connect:
                ClientSimple c = new ClientSimple();
                c.MainSocket = server;
                c.Connection = msg.SenderConnection;
                c.chunksseen = new bool[(MapSizeX / ChunkSize) * (MapSizeY / ChunkSize)][];
                clients[0]   = c;
                clientsCount = 1;
                break;

            case NetworkMessageType.Data:
                byte[]        data   = msg.message;
                Packet_Client packet = new Packet_Client();
                Packet_ClientSerializer.DeserializeBuffer(data, msg.messageLength, packet);
                ProcessPacket(0, packet);
                break;

            case NetworkMessageType.Disconnect:
                break;
            }
        }
    }
예제 #2
0
    void SendRequest(NetClient client)
    {
        //Create request packet
        Packet_Client pp = ClientPackets.ServerQuery();

        //Serialize packet
        CitoMemoryStream ms = new CitoMemoryStream();

        Packet_ClientSerializer.Serialize(ms, pp);
        byte[] data = ms.ToArray();

        //Send packet to server
        INetOutgoingMessage msg = new INetOutgoingMessage();

        msg.Write(data, ms.Length());
        client.SendMessage(msg, MyNetDeliveryMethod.ReliableOrdered);
    }