Beispiel #1
0
        internal static void Input(string str)
        {
            if (str.StartsWith("discover "))
            {
                s_peer.DiscoverLocalPeers(Int32.Parse(str.Substring(9)));
                return;
            }

            if (str.StartsWith("connect "))
            {
                int idx = str.IndexOf(' ', 8);
                if (idx == -1)
                {
                    // port only
                    s_peer.Connect("127.0.0.1", Int32.Parse(str.Substring(8)), Encoding.ASCII.GetBytes("Hi; I'm " + s_peer.GetHashCode()));
                    return;
                }
                else
                {
                    // host and port
                    string host    = str.Substring(8, idx - 8);
                    string portStr = str.Substring(idx + 1);
                    s_peer.Connect(host, Int32.Parse(portStr), Encoding.ASCII.GetBytes("Hi; I'm " + s_peer.GetHashCode()));
                    return;
                }
            }

            NetBuffer buffer = s_peer.CreateBuffer();

            buffer.Write(str);

            // send to all other peers
            s_peer.SendToAll(buffer, NetChannel.ReliableUnordered);
        }
Beispiel #2
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            s_mainForm = new Form1();

            WriteToConsole("Type 'connect <host> <port>' to connect to another peer, or 'connect <port>' to connect to another localhost peer");

            NetConfiguration config = new NetConfiguration("p2pchat");

            config.MaxConnections = 256;
            s_peer = new NetPeer(config);
            //s_peer.VerboseLog = true;

            s_peer.SetMessageTypeEnabled(NetMessageType.ConnectionRejected | NetMessageType.BadMessageReceived | NetMessageType.VerboseDebugMessage, true);

            // start listening for incoming connections
            s_peer.Start();

            // create a buffer to read data into
            s_readBuffer = s_peer.CreateBuffer();

            Application.Idle += new EventHandler(OnAppIdle);
            Application.Run(s_mainForm);

            s_peer.Shutdown("Application exiting");
        }
Beispiel #3
0
        public static string GetMessageFromConnection(NetPeer peer, out NetMessageType type, out NetConnection senderConnection)
        {
            NetBuffer buffer   = peer.CreateBuffer();
            String    retVal   = String.Empty;
            bool      dataread = false;

            do
            {
                peer.ReadMessage(buffer, out type, out senderConnection);
                switch (type)
                {
                case NetMessageType.ServerDiscovered:
                    /*
                     * // just connect to any server found!
                     * // make hail
                     * NetBuffer buf = client.CreateBuffer();
                     * buf.Write("Hail from " + Environment.MachineName);
                     * client.Connect(buffer.ReadIPEndPoint(), buf.ToArray());
                     */
                    break;

                case NetMessageType.ConnectionRejected:
                    //Console.WriteLine("Rejected: " + buffer.ReadString());
                    break;

                case NetMessageType.DebugMessage:
                case NetMessageType.VerboseDebugMessage:
                    //Console.WriteLine(buffer.ReadString());
                    break;

                case NetMessageType.StatusChanged:
                    //Console.WriteLine("New status: " + client.Status + " (" + buffer.ReadString() + ")");
                    break;

                case NetMessageType.Data:
                    // The other sent this data!
                    retVal   = buffer.ReadString();
                    dataread = true;
                    break;
                }
            }while (!dataread);
            return(retVal);
        }