Impossibile creare un socket: java.net.ConnectException: Il collegamento ha rifiutato: connect

StackOverflow https://stackoverflow.com/questions/8815561

Domanda

Ho intenzione di creare un socket e ottenere un InputStream. Ecco come ho provato.

try {
    final String serverIP = "111.111.111.111";
    final int serverPort = Integer.parseInt(server_port);
    final InetAddress serverAd=InetAddress.getByName(serverIP);
    final InetAddress localAd =InetAddress.getByName(local_ip);  
    final int localPort = 4040;

    Socket socket = new Socket(serverAd, serverPort, localAd, localPort);  
}  

Ma c'è un'eccezione sollevata,

java.net.ConnectException: Connection refused: connect
    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:366)
    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:276)
    at shootist.Porter.run(Porter.java:41)

Qui il server invia mi RTP dei dati e lato server è ok e confermate. Ho mandato invitare e ottenuto 200 pure. Se c'è un problema nella mia IP e la porta, credo, tutte le risposte non possono consegnato alla mia porte IP e dato. Ma non può accadere come il server mi manda risposte al mio IP e dato il numero di porta. Come posso risolvere il problema? Dove ho sbagliato e che cosa?

È stato utile?

Soluzione

A "connection refused" mezzi di errore dello stack presa sulla macchina server ha ricevuto la tua richiesta di connessione e intenzionalmente rifiutato di accettarla. Ciò avviene per una delle due possibili ragioni:

1) non v'è alcuna presa di ascolto che funziona sulla porta che si sta tentando di connettersi.

2) c'è un socket in ascolto, ma il suo backlog di connessioni in attesa è piena, quindi non c'è spazio per accodare la richiesta in quel momento.

Per differenziare tra i due, provare a ricollegare un paio di volte con un ritardo tra ogni tentativo. Se si ottiene lo stesso errore in modo coerente, poi 1 # è probabile il colpevole. Assicurarsi che il numero di porta è corretto. Se 2 # è il colpevole, vostro riconnessione ha una possibilità di successo alla fine.

Altri suggerimenti

Connessione rifiutata mezzo vostro stanno tentano di connettersi a un server che non è in ascolto su quella porta, o è troppo backlog per accettare la connessione.

Un modo semplice per verificare ciò è quello di provare

 telnet 111.111.111.111 4040
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top