private void myOnConnectCallback(SocksProxySocket.Proxy p)
 {
     p.Send(raw);
     p.Receive();
 }
        private void myOnReceiveCallback(SocksProxySocket.Proxy p, byte[] data)
        {
            Close(false);

            if (onCompletionCallback == null)
                return;

            if (data != null)
            {
                onCompletionCallback(true, Encoding.ASCII.GetString(data));
            }
            else
            {
                onCompletionCallback(false, null);
            }
        }
    private void ChOnRecieve(SocksProxySocket.Proxy p, byte[] data)
    {
        string packetString = Encoding.ASCII.GetString(data);
        if (this.incompletePacketData != "")
        {
            packetString = this.incompletePacketData + packetString;
        }
        string[] packets = packetString.Split('\0');
        if (packets[packets.Length - 1] != "")
        {
            // we are still waiting for more data
            for (int i = 0; i < packets.Length - 1; i++)
            {
                ChHandlePacket(packets[i].Replace("\r\n", ""));
            }

            this.incompletePacketData = packets[packets.Length - 1];
            this.Receive();
        }
        else
        {
            // we are not waiting for more data
            this.incompletePacketData = "";
            for (int i = 0; i < packets.Length - 1; i++)
            {
                ChHandlePacket(packets[i].Replace("\r\n", ""));
            }
        }
    }