private void receiveLoop() { while (IsRunning) { NetIncomingMessage msg = lidgrenClient.ReadMessage(); if (msg != null) { switch (msg.MessageType) { case NetIncomingMessageType.VerboseDebugMessage: case NetIncomingMessageType.DebugMessage: case NetIncomingMessageType.ErrorMessage: case NetIncomingMessageType.WarningMessage: Console.WriteLine(msg.ReadString()); break; case NetIncomingMessageType.Data: IncomingMessage im = new IncomingMessage(); im.DecodeFrom(msg); Manager.MessageReceived(im, ContactPort); OnMessageReceived(new MessageReceivedEventArgs(im)); break; case NetIncomingMessageType.StatusChanged: NetConnectionStatus status = (NetConnectionStatus)msg.ReadByte(); string reason = msg.ReadString(); Console.WriteLine(msg.SenderConnection + " status: " + status + " (" + reason + ")"); if (status == NetConnectionStatus.Disconnected && IsConnected) { Manager.Disconnected(msg.SenderEndpoint); IsConnected = false; } else if (status == NetConnectionStatus.Connected) IsConnected = true; break; default: throw new InvalidOperationException("An unhandled MessageType was received."); } lidgrenClient.Recycle(msg); } Thread.Sleep(1); } }
private void receiveLoop() { while (IsRunning) { NetIncomingMessage msg = lidgrenServer.ReadMessage(); if (msg != null) { switch (msg.MessageType) { case NetIncomingMessageType.DiscoveryRequest: if (NetworkUtility.IsLocalIpAddress(msg.SenderEndpoint.Address.ToString())) { //-- Is it from this app? Send DiscoveryRequest only if its from a different app. if (msg.SenderEndpoint.Port != Port) { Manager.DiscoveryRequestReceived(msg.SenderEndpoint, Port); } } else { //-- It's from another machine. Manager.DiscoveryRequestReceived(msg.SenderEndpoint, Port); } break; case NetIncomingMessageType.VerboseDebugMessage: case NetIncomingMessageType.DebugMessage: case NetIncomingMessageType.ErrorMessage: case NetIncomingMessageType.WarningMessage: ServerUIShell.WriteLine("-Lidgren.Network Message: " + msg.ReadString()); break; case NetIncomingMessageType.UnconnectedData: case NetIncomingMessageType.Data: IncomingMessage im = new IncomingMessage(); im.DecodeFrom(msg); Manager.MessageReceived(im, Port); OnMessageReceived(new MessageReceivedEventArgs(im)); break; case NetIncomingMessageType.StatusChanged: NetConnectionStatus status = (NetConnectionStatus)msg.ReadByte(); if (status == NetConnectionStatus.Disconnected) Manager.Disconnected(msg.SenderEndpoint, Port); else if (status == NetConnectionStatus.Connected) Manager.Connected(msg.SenderEndpoint, Port); break; default: throw new InvalidOperationException("An unhandled MessageType was received."); } lidgrenServer.Recycle(msg); } Thread.Sleep(1); } }