public void Start(object sender, DoWorkEventArgs evArgs) { bgWorker = (BackgroundWorker)evArgs.Argument; IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse(this.ClientIp), this.ClientPort); Socket listener = new Socket(SocketType.Stream, ProtocolType.Tcp); try { Server = new NetContainer(); Server.ClSocket = new Socket(SocketType.Stream, ProtocolType.Tcp); Server.ClSocket.Connect(this.ServerIp, this.ServerPort); Server.Encoder = new XRC4Cipher(Config.RC4Key); Server.Decoder = new XRC4Cipher(Config.RC4Key); Server.Buffer = new byte[Config.MaxBuffer]; Server.Data = new PacketStream(); Server.ClSocket.BeginReceive(Server.Buffer, 0, Config.MaxBuffer, 0, new AsyncCallback(ServerReadCallback), Server); listener.Bind(localEndPoint); listener.Listen(1); listener.BeginAccept(new AsyncCallback(AcceptCallback), listener); Form1.Log("Initialized"); } catch (Exception e) { Form1.Log(e.Message); allDone.Set(); } allDone.WaitOne(); }
// =========================================== // CLIENT // =========================================== private void AcceptCallback(IAsyncResult ar) { Socket listener = (Socket)ar.AsyncState; Socket handler = listener.EndAccept(ar); Client = new NetContainer(); Client.ClSocket = handler; Client.Encoder = new XRC4Cipher(Config.RC4Key); Client.Decoder = new XRC4Cipher(Config.RC4Key); Client.Buffer = new byte[Config.MaxBuffer]; Client.Data = new PacketStream(); bgWorker.ReportProgress(0, "Client Connect"); handler.BeginReceive( Client.Buffer, 0, Config.MaxBuffer, 0, new AsyncCallback(ReadCallback), Client ); }