private void handleLobby() { DW.RegisterDistrict initPacket = new DW.RegisterDistrict(Program.Type, Program.ID, Program.Language, Program.Password, Program.IP, Program.Port, Program.Token); stream.Write(initPacket.ToArray(), 0, initPacket.ToArray().Length); stream.Flush(); Byte[] message = new Byte[4096]; int bytesRead; while (true) { bytesRead = 0; try { bytesRead = stream.Read(message, 0, 4096); } catch { break; } if (bytesRead == 0) { break; } IPacket packet = null; switch (message[0]) { case (Byte)OpCodes.WD_MSG_INFO: packet = new MessageInfo(); break; } packet.Write(message, 1, bytesRead - 1); packet.Handle(); } Log.Error("World.Client", "World server disconnected! Reconnecting..."); client.Close(); stream.Dispose(); try { client = new TcpClient(); connect(address); stream = client.GetStream(); Log.Succes("World.Client", "Reconnected!"); handleLobby(); } catch(Exception e) { Log.Error("World.Client", "Failed to reconnect due to following exception:\n\n"); Console.WriteLine(e.ToString()); return; } }
private void handleLobby() { DW.RegisterDistrict initPacket = new DW.RegisterDistrict(Program.Type, Program.ID, Program.Language, Program.Password, Program.IP); stream.Write(initPacket.ToArray(), 0, initPacket.ToArray().Length); stream.Flush(); Byte[] message = new Byte[4096]; int bytesRead; while (true) { bytesRead = 0; try { bytesRead = stream.Read(message, 0, 4096); } catch { break; } if (bytesRead == 0) { break; } IPacket packet = null; switch (message[0]) { case (Byte)OpCodes.WD_DB_INFO: packet = new DBInfo(); break; } packet.Write(message, 1, bytesRead - 1); packet.Handle(); } Log.Error("World.Client", "World server disconnected! Reconnecting..."); client.Close(); stream.Dispose(); client = new TcpClient(); connect(address); stream = client.GetStream(); Log.Succes("World.Client", "Reconnected!"); handleLobby(); }