java.net.ConnectException: Verbinding geweigerd

Ik ben op zoek naar een TCP-verbinding uit te voeren, alles werkt prima vanaf de kant van de server, maar toen ik de cliënt programma uit te voeren (van de client computer) krijg ik de volgende foutmelding:

java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
        at java.net.Socket.connect(Socket.java:529)
        at java.net.Socket.connect(Socket.java:478)
        at java.net.Socket.<init>(Socket.java:375)
        at java.net.Socket.<init>(Socket.java:189)
        at TCPClient.main(TCPClient.java:13)

Ik probeerde het veranderen van het stopcontact voor het geval was het in gebruik, maar het mocht niet baten, weet iemand wat de oorzaak van deze fout & amp; hoe dit te verhelpen.

De server Code:

//TCPServer.java
import java.io.*;
import java.net.*;
class TCPServer {
    public static void main(String argv[]) throws Exception {
        String fromclient;
        String toclient;
        ServerSocket Server = new ServerSocket(5000);
        System.out.println("TCPServer Waiting for client on port 5000");
        while (true) {
            Socket connected = Server.accept();
            System.out.println(" THE CLIENT" + " " + connected.getInetAddress()
                    + ":" + connected.getPort() + " IS CONNECTED ");
            BufferedReader inFromUser = new BufferedReader(
                    new InputStreamReader(System.in));
            BufferedReader inFromClient = new BufferedReader(
                    new InputStreamReader(connected.getInputStream()));
            PrintWriter outToClient = new PrintWriter(
                    connected.getOutputStream(), true);
            while (true) {
                System.out.println("SEND(Type Q or q to Quit):");
                toclient = inFromUser.readLine();
                if (toclient.equals("q") || toclient.equals("Q")) {
                    outToClient.println(toclient);
                    connected.close();
                    break;
                } else {
                    outToClient.println(toclient);
                }
                fromclient = inFromClient.readLine();
                if (fromclient.equals("q") || fromclient.equals("Q")) {
                    connected.close();
                    break;
                } else {
                    System.out.println("RECIEVED:" + fromclient);
                }
            }
        }
    }
}

De clientcode:

//TCPClient.java
import java.io.*;
import java.net.*;
class TCPClient {
    public static void main(String argv[]) throws Exception {
        String FromServer;
        String ToServer;
        Socket clientSocket = new Socket("localhost", 5000);
        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(
                System.in));
        PrintWriter outToServer = new PrintWriter(
                clientSocket.getOutputStream(), true);
        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(
                clientSocket.getInputStream()));
        while (true) {
            FromServer = inFromServer.readLine();
            if (FromServer.equals("q") || FromServer.equals("Q")) {
                clientSocket.close();
                break;
            } else {
                System.out.println("RECIEVED:" + FromServer);
                System.out.println("SEND(Type Q or q to Quit):");
                ToServer = inFromUser.readLine();
                if (ToServer.equals("Q") || ToServer.equals("q")) {
                    outToServer.println(ToServer);
                    clientSocket.close();
                    break;
                } else {
                    outToServer.println(ToServer);
                }
            }
        }
    }
}

Antwoord 1, autoriteit 100%

Deze uitzondering betekent dat er geen service luistert op de IP/poort waarmee u verbinding probeert te maken:

  • Je probeert verbinding te maken met de verkeerde IP/Host of poort.
  • U heeft uw server niet gestart.
  • Je server luistert niet naar verbindingen.
  • Op Windows-servers is de wachtrij voor luisterachterstanden vol.

Antwoord 2, autoriteit 12%

Ik zou het volgende controleren:

  • Hostnaam en poort waarmee u verbinding probeert te maken
  • De serverkant is erin geslaagd om correct te beginnen met luisteren
  • Er is geen firewall die de verbinding blokkeert

Het eenvoudigste startpunt is waarschijnlijk om handmatig verbinding te maken vanaf de clientcomputer met telnet of Putty. Lukt dat, dan zit het probleem in je klantcode. Als dit niet het geval is, moet u uitzoeken waaromdat niet het geval is. Wiresharkkan je hierbij helpen.


Antwoord 3, autoriteit 2%

U moet uw client-socket verbinden met de externe ServerSocket. In plaats van

Socket clientSocket = new Socket("localhost", 5000);

doe

Socket clientSocket = new Socket(serverName, 5000);

De client moet verbinding maken met serverNamedie moet overeenkomen met de naam of het IP-adres van de box waarop uw ServerSocketis geïnstantieerd (de naam moet bereikbaar zijn vanaf de clientcomputer) . Tussen haakjes: het is niet de naam die belangrijk is, het gaat allemaal om IP-adressen…


Antwoord 4, autoriteit 2%

Ik had hetzelfde probleem, maar het uitvoeren van de server voordat de client werd uitgevoerd, loste het op.


Antwoord 5, autoriteit 2%

Een punt dat ik zou willen toevoegen aan de bovenstaande antwoorden is mijn ervaring

“Ik hostte op mijn server op localhosten probeerde er verbinding mee te maken via een Android-emulatordoor de juiste URL op te geven, zoals http://localhost/my_api/login.php. En ik kreeg fout verbinding geweigerd

Opmerking –Toen ik net naar de browser op de pc ging en dezelfde URL gebruikte (http://localhost/my_api/login.php) Ik kreeg de juiste reactie

dus het probleem in mijn geval was de term localhostdie ik heb vervangen door het IPvoor mijn server (aangezien uw server op uw computer wordt gehost) waardoor deze bereikbaar werd van mijn emulator op dezelfde pc.


Om IP voor uw lokale machine te krijgen, kunt u de opdracht ipconfiggebruiken op cmd
je krijgt IPv4 zoiets als 192.68.xx.yy
Voila ..dat is het IP-adres van uw machine waarop uw server wordt gehost.
gebruik het dan in plaats van localhost

http://192.168.72.66/my_api/login.php


Opmerking – u kunt dit privé-IP niet bereiken vanaf een knooppunt buiten deze computer. (In het geval dat je nodig hebt, kun je Ngnix daarvoor gebruiken)


Antwoord 6

Ik had hetzelfde probleem met Mqtt broker genaamd vernemq.maar loste het op door het volgende toe te voegen.

  1. $ sudo vmq-admin listener show

Om de lijst te tonen o ips en poorten voor Vernemq

  1. $ sudo vmq-admin listener start port=1885 -a 0.0.0.0 --mountpoint /appname --nr_of_acceptors=10 --max_connections=20000

Om een ​​IP en uw nieuwe poort toe te voegen. Nu zou u kunnen kunnen verbinden zonder enig probleem.

Ik hoop dat het uw probleem oplost.


Antwoord 7

Ik hoop dat mijn ervaring nuttig kan zijn voor iemand. Ik vond het probleem met dezelfde uitzonderingstacktrace en ik kon niet begrijpen wat het probleem was. De databaseserver die ik probeerde aan te sluiten was actief en de haven was open en accepteerde verbindingen.

Het probleem was met internetverbinding. De internetverbinding die ik gebruikte, was niet toegestaan ​​om verbinding te maken met de bijbehorende server. Toen ik de verbindingsdetails heb gewijzigd, werd het probleem opgelost.


Antwoord 8

In mijn geval gaf ik het stopcontact de naam van de server (in mijn geval “Raspberrypi”) en in plaats daarvan maakte een IPv4-adres het of om op te geven dat IPv6 wordt verbroken (de naam opgelost in een IPv6)


Antwoord 9

In mijn geval moest ik een vinkje plaatsen in de buurt van Expose daemon on tcp://localhost:2375 without TLSin dockerInstelling (aan de rechterkant van De taakbalk, met de rechtermuisknop op docker, selecteer setting)


Antwoord 10

Ik kreeg deze fout omdat ik ServerSocketin een voor lus gesloten is die proberen het aantal klanten erin te accepteren (ik heb niet klaar met het accepteren van alle clints)

Wees voorzichtig met het sluiten van uw socket


Antwoord 11

Ik had hetzelfde probleem en het probleem was dat ik geen socketobject sluit. Na het gebruik van socket.close (); probleem opgelost.
Deze code werkt voor mij.

ClientDemo.java

public class ClientDemo {
    public static void main(String[] args) throws UnknownHostException,
            IOException {
        Socket socket = new Socket("127.0.0.1", 55286);
        OutputStreamWriter os = new OutputStreamWriter(socket.getOutputStream());
        os.write("Santosh Karna");
        os.flush();
        socket.close();
    }
}

en
ServerDemo.java

public class ServerDemo {
    public static void main(String[] args) throws IOException {
        System.out.println("server is started");
        ServerSocket serverSocket= new ServerSocket(55286);
        System.out.println("server is waiting");
        Socket socket=serverSocket.accept();
        System.out.println("Client connected");
        BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String str=reader.readLine();
        System.out.println("Client data: "+str);
        socket.close();
        serverSocket.close();
    }
}

Antwoord 12

Ik heb mijn DNS-netwerk gewijzigd en het probleem is opgelost


Antwoord 13

U heeft de server waarschijnlijk niet geïnitialiseerd of de client probeert verbinding te maken met de verkeerde ip/poort.


Antwoord 14

Wijzig de lokale host in uw ip-adres

localhost
 //to you local ip
 192.168.xxxx

Antwoord 15

Er is een servicegenaamd MySQL80die moet worden uitgevoerd om verbinding te maken met de database

voor Windows kun je er toegang toe krijgen door naar services te zoeken, zoek dan naar de MySQL80-service en zorg ervoor dat deze actief is


Antwoord 16

Het kan zijn dat er nog een voorbeeld van de klant is die nog steeds draait en op poort 5000 wordt geluisterd.


Antwoord 17

Ik had hetzelfde probleem, en het bleek te zijn aan toestemming van de catalina.outBestand niet correct is. Het was niet beschrijfbaar door de Tomcat-gebruiker. Zodra ik de machtigingen heb opgelost, werd het probleem opgelost. Ik moet weten dat het een machtigingen is van de logs in de tomcat8-initd.logbestand:

/usr/sbin/tomcat8: line 40: /usr/share/tomcat8/logs/catalina.out: Permission denied

Other episodes