Wie wie verbinde ich einen Socket Client zu einem Server über eine Proxy in C#?

1 Antwort

MIt einem UdpClient-Objekt: Afaik gar nicht.

Was du aber machen kannst, wenn es dir um UDP geht: Mit einem TcpClient zu einem Socks5-Proxy verbinden und für die Verbindungsart 0x03 (UDP-Weiterleitung) verwenden.

Siehe dazu auch: https://de.wikipedia.org/wiki/SOCKS#Das_SOCKS-5-Protokoll


RuSsiAZocker 
Beitragsersteller
 22.01.2019, 19:53

Und wie würde man das dann machen müssen?

0
Isendrak  22.01.2019, 20:02
@RuSsiAZocker

Für ne UDP-Verbindung weiss ich das leider nicht, hab das bisher nur für TCP gemacht.

Da müsstest du evtl. mal schauen, ob du irgenwo nähere Infos darüber findest, wie genau UDP über Socks funktioniert.

1
RuSsiAZocker 
Beitragsersteller
 22.01.2019, 21:54
@Isendrak

Könntest du dann zeigen wie es für TCP geht weil das ist egal dann code ich es halt mit tcp wenn es so leichter ist.

0
Isendrak  22.01.2019, 22:12
@RuSsiAZocker

In dem Fall:

1) Pack diese Datei unter dem Namen SocksForSharp.cs in dein Projekt: https://pastebin.com/wbfhzS4w

2) Füge in deiner Klasse die using-Direktive using SocksForSharp; hinzu.

3) Verwende anstelle von TcpClient.Connect die Erweiterungsmethode TcpClient.ConnectProxy.

Anwendungsbeispiel:

using System;
using SocksForSharp;

public class Test{
    public static void Main(string[] args){
        TcpClient client = new TcpClient();
        Proxy proxy = new Proxy(){
            Type = ProxyType.Socks5,
            EndPoint = new IPEndPoint(
                IPAddress.Parse("12.34.56.78"),
                1080
            )
        };
        try{
            client.ConnectProxy("example.com", 80, proxy);
        }
        catch(SocksError err){
            Console.Error.WriteLine("SocksError: {0}", err.Message);
        }
        //TODO: Kommunikation zwischen Client und Server
        client.Close();
    }
}
0