public MainWindow() { using (Mutex m = new Mutex(false, "SERV")) { if (!m.WaitOne(TimeSpan.FromSeconds(1), false)) { MessageBox.Show("Server is already running!"); Application.Current.Shutdown(); return; } } InitializeComponent(); LogList = new ObservableCollection<DataLog>(); LogList.CollectionChanged += LogList_CollectionChanged; Loaded += MainWindow_Loaded; Application.Current.Exit += Current_Exit; ServerPackets.ServerPacketHandler handler = new ServerPackets.ServerPacketHandler(); ContextMenu ctxMenu = this.Resources["ctxMenu"] as ContextMenu; string[] opcodes = Enum.GetNames(typeof(Opcode)); short[] values = (short[])Enum.GetValues(typeof(Opcode)); var opcItr = opcodes.Zip(values, (o, v) => new Tuple<string, Opcode>(o, (Opcode)v)).Where( (t) => t.Item1.StartsWith("C") && t.Item2 != Opcode.Count); foreach (var pair in opcItr) { MenuItem item = new MenuItem { Header = pair.Item1, Tag = pair.Item2 }; item.Click += Item_Click; ctxMenu.Items.Add(item); } MenuItem item2 = new MenuItem { Header = "Test" }; item2.Click += (s, e) => { Packet p = new Packet(Opcode.Test); p.WriteString(new string('*', 1000)); GameWorld.SendToAll(p); }; ctxMenu.Items.Add(item2); }
public void Connect(string Ip, int Port, ConcurrentQueue<Packet> receiveQueue) { if (_client != null && _client.Connected) Disconnect(); _receivePacketQueue = receiveQueue; _client = new Socket(SocketType.Stream, ProtocolType.Tcp); try { _client.Connect(IPAddress.Parse(Ip), Port); } catch (Exception e) { Log.Error(e.Message); Disconnect(); return; } _sendPacketQueue = new ConcurrentQueue<Packet>(); Packet p = new Packet(Opcode.SConnection1); p.WriteString("WELL MET SERVER"); Send(p); _receiverThread = new Thread(ReceiverThread); _senderThread = new Thread(SenderThread); _senderThread.Start(); _receiverThread.Start(); }
void TestPackets() { Packet p = new Packet(Opcode.Test); p.WriteString("F**K"); p.WriteInt32(123); byte[] bytes = p.GetBytes(); Opcode opc = (Opcode)BitConverter.ToInt16(bytes, 0); short length = BitConverter.ToInt16(bytes, 2); string Data = p.ReadString(); int i = p.ReadInt32(); }
private void TestBtnClick(object sender, RoutedEventArgs e) { if ((sender as Button) == testBtn1) { var go = GameLogic.GameObjectFactory.CreateRandomGO(); GameLogic.Game.GetWorld().AddToWorld(go); _testStack.Push(go); } else if ((sender as Button) == testBtn2) { if (_testStack.Count > 0) { var go = _testStack.Pop(); GameLogic.Game.GetWorld().RemoveFromWorld(go); } } else { Packet p = new Packet(Opcode.Test); p.WriteString(new string('*', 1000)); MainWindow.Connection.Send(p); } }