void Client_onDataReceived(object sender, DataEventArgs e)
{
//this should be packet header.
try
{
if (enc.GetAuthType() != AuthTypes.Login && enc.GetAuthType() != AuthTypes.None)
{
//get total number of bytes.
int torecv = BitConverter.ToInt32(e.Buffer, 0);
byte[] newbuff = new byte[torecv];
int recvd = Client.Receive(newbuff, 0, torecv);
if (recvd == torecv)
{
byte[] output = enc.ProcessInputData(newbuff, 0, recvd);
//receive full packet.
e.Buffer = output;
e.Offset = 0;
e.Count = output.Length;
this.OnDataReceived(this, new Socks5ClientDataArgs(this, e.Buffer, e.Count, e.Offset));
}
}
else
{
this.OnDataReceived(this, new Socks5ClientDataArgs(this, e.Buffer, e.Count, e.Offset));
}
}
catch (Exception ex)
{
//disconnect.
Client.Disconnect();
throw ex;
}
}