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); }
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"); }
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); }