client.TcpHandler = (address, port) =>
{
    var proxy = new Socks5ProxyClient(
        proxyHost, proxyPort, proxyUsername, proxyPassword);
    return System.Threading.Tasks.Task.FromResult(
        proxy.CreateConnection(address, port));
};
await client.LoginUserIfNeeded();

Usate il WTelegram.Client esistente e importate la libreria SOCKS compatibile scelta. proxyHost, porta e account identificano l’intermediario; address/port della lambda sono le destinazioni richieste da WTelegram.

CreateConnection deve restituire un TcpClient connesso dopo la negoziazione con il proxy. Raggiungere soltanto la porta del proxy non consente questo passaggio.

L’esempio usa un metodo sincrono della libreria. Racchiuderne il risultato in Task.FromResult non rende la connessione non bloccante; usate un metodo asincrono supportato quando serve.

Mantenete il gestore anche per le connessioni successive, non solo per l’accesso. L’autenticazione dell’account Telegram resta separata dall’account SOCKS.

Articoli correlati