Example #1
0
 //-----------------------------------------------------------------------------------------
 public void SendReliableMessageTo(IPEndPoint target, NetMessage data)
 {
     data.PushFront(++nmID);
     data.PushFront((byte)RU_MessageType.RELIABLE);
     AddRUMessage(nmID, target, data);
     _socket.BeginSend(data.ToArray(), data.GetLength(), target, new AsyncCallback(SentCallback), _socket);
 }
Example #2
0
    //-----------------------------------------------------------------------------------------
    private void ManageReliable(IPEndPoint source, NetMessage nm)
    {
        UInt32 id       = nm.PopUInt32();
        int    sourceHC = source.GetHashCode();

        NetMessage tmp = new NetMessage();

        tmp.Push(sourceHC);
        tmp.Push(id);
        UInt64 id64 = tmp.PopUInt64();

        if (alreadyReceived.Contains(id64))
        {
            return;
        }

        tmp.Push(sourceHC);
        tmp.Push(id - 1000);
        UInt64 id641k = tmp.PopUInt64();

        if (alreadyReceived.Contains(id641k))
        {
            alreadyReceived.Remove(id641k);                                  //Only keep 1000 messages in pool
        }
        alreadyReceived.Add(id64);

        tmp = new NetMessage();
        tmp.Push((byte)RU_MessageType.ACK);
        tmp.Push(id);
        _socket.BeginSend(tmp.ToArray(), tmp.GetLength(), source, new AsyncCallback(SentCallback), _socket);

        NetMessage tmp2 = new NetMessage(nm, 5);

        OnMessageReceivedAsync(source, tmp2, true);
    }
Example #3
0
 public NetMessage(NetMessage source, int startFrom = 0) {
         buff = new byte[source.GetLength() - startFrom];
         Buffer.BlockCopy(source.ToArray(), startFrom, buff, 0, source.GetLength()-startFrom);
 }