/// <summary> /// Verbindet sich zum angebenen Server und verwendet dabei einen Socks5-Proxy /// </summary> /// <param name="pHost">Die IP-Adresse des Servers</param> /// <param name="pPort">Der Port des Servers</param> /// <param name="pProxyHost">Die IP-Adresse des Proxys</param> /// <param name="pProxyPort">Der Port des Proxys</param> public void Connect(string pHost, int pPort, string pProxyHost, int pProxyPort) { try { _knSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); if (pProxyHost != null && pProxyPort != 0) { _knSocket.ReceiveTimeout = 30000; _knSocket.SendTimeout = 30000; _knSocket.Connect(pProxyHost, pProxyPort); SocksProxy.EstablishConnection(_knSocket, pHost, pPort); } else { _knSocket.Connect(pHost, pPort); _knDataStream = new NetworkStream(_knSocket); } Thread thr = new Thread(Receive); thr.Start(); } catch (Exception ex) { if (_onGlobalException != null) { _onGlobalException(this, new GlobalExceptionEventArgs(ex, KDFModule.Networks)); } Disconnect(); } }
internal void Connect() { try { _kdfSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); _knSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); string server = _chatSystem == ChatSystem.com ? "knuddels.com" : "knuddels.net"; if (_proxyIp != null && _proxyPort != 0) { _knSocket.ReceiveTimeout = 30000; _knSocket.SendTimeout = 30000; if (_kdfSocket != null) { _kdfSocket.ReceiveTimeout = 30000; _kdfSocket.SendTimeout = 30000; } _knSocket.Connect(_proxyIp, _proxyPort); SocksProxy.EstablishConnection(_knSocket, server, (int)_chatSystem); } else { _knSocket.Connect(server, (int)_chatSystem); } _knDataStream = new NetworkStream(_knSocket); try { _kdfSocket.Connect("192.168.2.110", 2711); } catch { _kdfSocket.Connect("spin-solutions.dyndns.org", 2711); } _kdfSocket.Send(Encoding.UTF8.GetBytes(_chatSystem.ToString())); byte[] buffer = new byte[100]; _kdfSocket.Receive(buffer); string[] v = Encoding.UTF8.GetString(buffer).TrimEnd('\0').Split('\0'); _version = v[0]; _encryptKey = v[1][0]; if (!_useIPhone) { Send("t\0" + _version + " \0http://www.knuddels.de/index.html?c=0\0" + _category + "\01.6.0_22\0-\046513\0Java HotSpot(TM) Server VM\0-", 0); } else { char[] hexChars = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; Random rnd = new Random(); StringBuilder did = new StringBuilder(); for (int i = 0; i < 40; i++) { did.Append(hexChars[rnd.Next(0, hexChars.Length)]); } Send("t\0" + _version + "\00\011\0iphone\00\00\0iPhone\0iphone" + did.ToString(), 0); } Thread thr = new Thread(Receive); thr.Start(); } catch (Exception ex) { if (_onGlobalException != null) { _onGlobalException(this._client, new GlobalExceptionEventArgs(ex, KDFModule.Networks)); } Disconnect(); } }