using System; using System.Net; using System.Text; using System.Net.Sockets; namespace Launcher_Client.Networking { class Client { public delegate void ReceiveEventHandler(String[] ServerMessage); public event ReceiveEventHandler Received; private Socket ClientSocket; private Byte[] ClientBuffer; public Client() { try { IPAddress ConnectIP = IPAddress.Parse(Properties.Settings.Default.Connect_IP); IPEndPoint ConnectEndPoint = new IPEndPoint(ConnectIP, Properties.Settings.Default.Connect_Port); ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ClientSocket.BeginConnect(ConnectEndPoint, new AsyncCallback(Connected), ClientSocket); } catch (Exception Error) { Program.Error(Error.Message); Environment.Exit(-1); } } private void Connected(IAsyncResult Result) { try { ClientSocket.EndConnect(Result); Send("1#{0}#{1}", Program.MacAddress(), Program.UniqueID("C")); Receive(); } catch (Exception Error) { Program.Error(Error.Message); Environment.Exit(-1); } } private void Receive() { try { ClientBuffer = new Byte[Properties.Settings.Default.Byte_Size]; ClientSocket.BeginReceive(ClientBuffer, 0, ClientBuffer.Length, SocketFlags.None, new AsyncCallback(Receive), ClientSocket); } catch (Exception Error) { Program.Error(Error.Message); Environment.Exit(-1); } } private void Receive(IAsyncResult Result) { try { Int32 ReceiveLength = ClientSocket.EndReceive(Result); Array.Resize(ref ClientBuffer, ReceiveLength); Received(Encoding.Unicode.GetString(ClientBuffer).Split('|')); Receive(); } catch (Exception Error) { Program.Error(Error.Message); Environment.Exit(-1); } } public void SendLogin(String Username, String Password) { try { String LoginInformation = String.Format("2|{0}|{1}", Username, Password); Send(LoginInformation); } catch (Exception Error) { Program.Error(Error.Message); Environment.Exit(-1); } } private void Send(String Message, params Object[] Arguments) { try { String FormattedMessage = String.Format(Message, Arguments); Byte[] Buffer = Encoding.ASCII.GetBytes(FormattedMessage); ClientSocket.Send(Buffer); } catch (Exception Error) { Program.Error(Error.Message); Environment.Exit(-1); } } } }