private void Loop() { Log("Starting Echo Server. Thead ID: " + Thread.CurrentThread.ManagedThreadId); NetworkPortListener listener = OpenPort(ECHO_SERVER_PORT); while (true) { if (m_Exit) { break; } while (listener.PacketCount != 0) { NetworkPacket packet = listener.ReadPacket(); packet.Respond(this, packet.Data); //Echo the Packet StringBuilder sb = new StringBuilder(); foreach (uint data in packet.Data) { sb.Append(( char )data); } Log("Echo Package Contents: {0}", sb); } Thread.Sleep(NetworkSettings.EchoServerThreadSleep); } m_Exit = false; }
private static void ListAdapterPorts(LocalNetworkNode node, string guid) { NetworkAdapter adapter = Find(node, guid); NetworkPortListener[] entries = adapter.GetAllPortListeners(); Console.WriteLine("Ports for Adapter: {0}", guid); for (int i = 0; i < entries.Length; i++) { NetworkPortListener entry = entries[i]; Console.WriteLine( "{0}\n\tIs Open: {1}\n\tPacket Count: {2}", entry.GetIdentity(), entry.IsOpen, entry.PacketCount ); } }
private void Loop() { Log("Starting DNS Server. Thead ID: " + Thread.CurrentThread.ManagedThreadId); NetworkPortListener listener = OpenPort(DNS_SERVER_PORT); if (m_DefaultName != null) { nameMap[m_DefaultName] = new DNSEntry { Name = m_DefaultName, CurrentAddress = NetworkAddress, GUID = GUID }; } while (true) { if (m_Exit) { break; } while (listener.PacketCount != 0) { NetworkPacket packet = listener.ReadPacket(); if (packet.Data.Length == 0) { continue; //Drop Packet } uint cmd = packet.Data[0]; if (cmd == DNS_CMD_REGISTER && packet.Data.Length > 1) { string data = new string( packet.Data.Skip(1).Select(x => ( char )x).ToArray()); string name = data.Remove(0, 36); //Remove GUID string guid = data.Remove(36); //Remove Name if (nameMap.TryGetValue(name, out DNSEntry e)) { if (guid == e.GUID) //Update the Address. { e.CurrentAddress = packet.Sender.NetworkAddress; packet.Respond(this, new[] { 1u }); } else { packet.Respond(this, new[] { 0u }); } } else { packet.Respond(this, new[] { 1u }); nameMap[name] = new DNSEntry { Name = name, CurrentAddress = packet.Sender.NetworkAddress, GUID = guid }; } } else if (cmd == DNS_CMD_RESOLVE) { string name = new string( packet.Data.Skip(1).Select(x => ( char )x).ToArray()); if (nameMap.ContainsKey(name)) { packet.Respond(this, new[] { ( uint )nameMap[name].CurrentAddress }); } else { packet.Respond(this, new[] { 0u }); } } } Thread.Sleep(NetworkSettings.DNSServerThreadSleep); } m_Exit = false; }