4 Stimmen

Es konnte keine Verbindung hergestellt werden, da die Zielmaschine die Verbindung aktiv abgelehnt hat - Verwendung von Socket oder TcpClient

Viele Menschen haben dieses Problem, aber die Implementierung jedes Einzelnen ist unterschiedlich.

Ich brauche Hilfe bei meiner Umsetzung davon.

void sendUsingTcp() 
{
    try 
    {
        Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(172.16.8.200), 8000);
        sock.Connect(endPoint);
        // Der Code nach diesem Punkt wird nie erreicht, weil die Zeile oben fehlschlägt
    } 
    catch (SocketException err) 
    {
        MessageBox.Show(err.Message);
    }
}

Ich habe auch den TCP-Client direkt ausprobiert, mit den gleichen Fehlerergebnissen:

void sendUsingTcp() 
{
    try 
    {
        using (TcpClient client = new TcpClient()) 
        {
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(172.16.8.200), 8000);
            client.Connect(endPoint);
            // Der Code nach diesem Punkt wird nie erreicht, weil die Zeile oben fehlschlägt
        }
    } 
    catch (SocketException err) 
    {
        MessageBox.Show(err.Message);
    }
}

Die IP-Adresse meines PCs ist 172.16.11.144.

0 Stimmen

Es sieht so aus, als würde auf Port 8000 von 172.16.8.200 nichts hören. Hast du tatsächlich dort einen Serverprozess gestartet?

0 Stimmen

Können Sie Telnet zu 172.16.8.200 auf Port 8000?

0 Stimmen

> telnet 172.16.8.200 führt dazu, dass ich eine Anmeldemeldung erhalte. Liegt es daran, dass mein Code fehlschlägt? Weil ich keine Anmeldeinformationen habe?

9voto

Rafael Emshoff Punkte 2041

Für mich stellte sich heraus, dass mein Server nur auf eingehende Verbindungen von derselben IP-Adresse hörte. Ich musste den Code ändern, damit er von jeder IP-Adresse aus gehört.

Vorher und Falsch:

IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(172.16.8.200), 8000);

Nachher mit behobenem Problem:

IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 8000);

3voto

Tom W Punkte 4604

I) Es ist durchaus möglich, dass der Port 8000 für etwas anderes verwendet wird. Wähle eine andere (große) Zahl und prüfe, ob dasselbe passiert. ii) Verwende die Loopback-Adresse, um eine Verbindung mit deinem eigenen Rechner herzustellen - IPAddress.Loopback

2voto

James Punkte 6391

Hast du überprüft, ob Port 8000 auf dem Remote-Maschine offen ist? Wenn ja, könnte es ein Firewall-Problem oder sogar etwas mit dem Netzwerk sein. Weitere Details darüber, was auf der Remote-Maschine läuft, wären hilfreich.

1voto

d.popov Punkte 3980

Üblicherweise liegt das Problem darin, dass der Port geschlossen ist. Auf der anderen Seite lauscht nichts.

1voto

Ken Tola Punkte 671

Nicht sicher, ob das jemals richtig beantwortet wurde, ABER man kann keinen TCPClient verwenden, um einen Listener einzurichten - man benötigt eine TCPListener-Klasse - https://learn.microsoft.com/en-us/dotnet/api/system.net.sockets.tcplistener?redirectedfrom=MSDN&view=netframework-4.7.2

Andernfalls tritt einfach eine Ausnahme auf, wenn der TCP-Handshake fehlschlägt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X