Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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
                    );
            }
        }
Esempio n. 3
0
        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;
        }