Pregunta

Voy a crear un socket y obtener un InputStream. Así es como lo intento.

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);  
}  

Pero hay una excepción lanzada,

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)

Aquí el servidor me envía datos RTP y el lado del servidor está bien y está confirmado. Envié invitación y obtuve 200 también. Creo que si hay un problema en mi IP y puerto, todas las respuestas no pueden entregarse a mi IP y a los puertos dados. Pero no puede suceder ya que el servidor me envía respuestas a mi IP y mi número de puerto dado. ¿Cómo puedo solucionar este problema? ¿Dónde estoy equivocado y qué?

¿Fue útil?

Solución

Un error de "conexión rechazada" significa que la pila de socket en la máquina del servidor recibió su solicitud de conexión e intencionalmente se negó a aceptarla. Eso sucede por una de dos posibles razones:

1) No hay un zócalo de escucha ejecutándose en el puerto al que está intentando conectarse.

2) Hay un zócalo escuchado, pero su acumulación de conexiones pendientes está llena, por lo que no hay espacio para hacer cola su solicitud en ese momento.

Para diferenciar entre los dos, intente volver a conectarse varias veces con un retraso entre cada intento. Si recibe el mismo error de manera consistente, entonces el #1 es probable que sea el culpable. Asegúrese de que el número de puerto sea correcto. Si el #2 es el culpable, su reconexión tiene la posibilidad de tener éxito eventualmente.

Otros consejos

La conexión rechazada significa que está tratando de conectarse a un servidor que no está escuchando en ese puerto, o está demasiado atrasado para aceptar la conexión.

Una forma simple de probar esto es intentar

 telnet 111.111.111.111 4040
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top