private static void NatMessageHandler(SNatMessage natMessage) { if (OnNatMessage != null) { OnNatMessage(natMessage); } }
private void Game_OnNatMessage(SNatMessage NatMessage) { IPAddress address; NetMessage message = new NetMessage(); if (!IPAddress.TryParse(NatMessage.Address, out address)) { address = Dns.GetHostEntry(NatMessage.Address).AddressList[0]; } message.EndPoint = new IPEndPoint(address, NatMessage.Port); message.Buffer = NatMessage.Message; this.QueueMessage(message); }
public SNatMessage NatMessageFromPtr(IntPtr natPtr) { SNatMessage message; SNatMessagePtr ptr = (SNatMessagePtr) Marshal.PtrToStructure(natPtr, typeof(SNatMessagePtr)); message = new SNatMessage { Address = Marshal.PtrToStringAnsi(ptr.Address), Port = ptr.Port, MessageSize = ptr.MessageSize, Message = new byte[ptr.MessageSize] }; Marshal.Copy(ptr.Message, message.Message, 0, message.MessageSize); return message; }