public void Run() { //websocket init Console.WriteLine("tetris server is starting... port:{0}", Port_WebSocket); var listener = new WebSocketServer(); listener.NewMessageReceived += listener_NewMessageReceived; listener.NewSessionConnected += listener_NewSessionConnected; if (!listener.Setup(Port_WebSocket)) { Console.WriteLine("failed to initialize."); return; } if (!listener.Start()) { Console.WriteLine("failed to start."); return; } //transceiver init Console.WriteLine("transceiver is starting... port:{0}", Port_Transceiver); var tr = new Transceiver(null, 2013); isRunning = true; Thread th = new Thread(() => { Packet p = new Packet(); while (isRunning) { p.Clear(); tr.Receive(ref p); Console.WriteLine("received a packet: {0}", p.Peek()); if (conn != null) { try { conn.Send((string)p.Pop()); } #pragma warning disable 0168 catch (Exception ex) { //conn = null; } #pragma warning restore 0168 } } tr.Dispose(); }); th.Start(); Console.WriteLine("press enter to terminate server."); Console.ReadLine(); isRunning = false; listener.Stop(); Console.WriteLine("terminating server..."); }
public EndPoint Receive(ref Packet p) { if(recvport == 0) throw new InvalidOperationException(); EndPoint host = new IPEndPoint(IPAddress.Any, recvport); int len = conn.ReceiveFrom(recvbuf, ref host); var xmlstr = Encoding.UTF8.GetString(recvbuf, 0, len); //Console.WriteLine(xmlstr); p.FromXml(xmlstr); return host; }
public bool Send(Packet p) { if (dest == null) throw new InvalidOperationException(); try { var data = Encoding.UTF8.GetBytes(p.ToXml()); conn.SendTo(data, dest); return true; } #pragma warning disable 0168 catch (Exception ex) { return false; } #pragma warning restore 0168 }
static void TestTransceiver() { Thread t = new Thread(() => { using (var listener = new Transceiver(null, ServerPort)) { var p = new Packet(); listener.Receive(ref p); Console.WriteLine("received: {0}",p.Pop()); } }); t.Start(); using (var sender = new Transceiver(new IPEndPoint(GetLocalIP(), ServerPort), 0)) { Thread.Sleep(500); var p = new Packet(); p.Push("transceiver test"); sender.Send(p); } Console.WriteLine("press enter to finish."); Console.ReadLine(); }