using System; using System.Net; using System.Net.Sockets; using System.Text; namespace FileSecurity_Client.Networking { class Client { public delegate void FileSecurityEventHandler(String[] Message); public event FileSecurityEventHandler MessageReceived; private Socket ServerSocket; private Byte[] ServerBuffer; public Client() { ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); } public void Connect() { IPAddress ConnectIP = IPAddress.Parse(Properties.Settings.Default.Server_IP); IPEndPoint ConnectEndPoint = new IPEndPoint(ConnectIP, Properties.Settings.Default.Security_Port); try { ServerSocket.BeginConnect(ConnectEndPoint, new AsyncCallback(Connected), ServerSocket); } catch (SocketException) { Program.Message("Somthing Went Wrong While Connecting To The Server :(, Please Send The Error Log -> {0} To The Support Team"); } } private void Connected(IAsyncResult Result) { try { ServerSocket.EndConnect(Result); Send("0|{0}|{1}", Program.MacAddress, Program.UniqueID); Receive(); } catch (SocketException) { } } private void Receive() { try { ServerBuffer = new Byte[Properties.Settings.Default.Byte_Size]; ServerSocket.BeginReceive(ServerBuffer, 0, ServerBuffer.Length, SocketFlags.None, new AsyncCallback(Received), ServerSocket); } catch (SocketException) { } } private void Received(IAsyncResult Result) { try { Int32 Length = ServerSocket.EndReceive(Result); Array.Resize(ref ServerBuffer, Length); if (Length != 0) { String[] ReceiveSplit = Encoding.Unicode.GetString(ServerBuffer).Split('|'); MessageReceived(ReceiveSplit); Receive(); } else { Close(); } } catch (SocketException) { } } private void Close() { try { ServerSocket.Disconnect(false); ServerSocket.Close(); } catch { } } public void Send(String Message, params Object[] Args) { try { String FormattedMessage = String.Format(Message, Args); Byte[] Buffer = Encoding.Unicode.GetBytes(FormattedMessage); ServerSocket.BeginSend(Buffer, 0, Buffer.Length, SocketFlags.None, new AsyncCallback(Sent), ServerSocket); } catch { } } private void Sent(IAsyncResult Result) { try { ServerSocket.EndSend(Result); } catch { } } } }