java.net.SocketException: argumento no válido: conectar
Mi nuevo portátil (Alienware m17x) arroja unjava.net.SocketException: Invalid argument: connect
cuando ejecuto el siguiente código básico:
Server.java:
public static void main (String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket (8888);
Socket socket = serverSocket.accept();
}
Client.java:
public static void main (String[] args) throws Exception {
Socket socket = new Socket ("localhost", 8888);
}
Cada vez que ejecuto Client.java (después de iniciar Server.java) obtengo esta excepción de socket. Aquí está el rastro completo de la excepción:
Exception in thread "main" java.net.SocketException: Invalid argument: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at Client.main(Client.java:5)
He intentado algunas cosas, pero sin suerte, siempre se lanza la excepción. Esto es lo que he concluido:
Cambiar los números de puerto no cambia nada. No es un problema con la red. He recibido la excepción en la escuela y en casa. He reinstalado JVM y JDK pero no tuve suerte. Esto solo ocurre en una máquina. He ejecutado el mismo código en mi escritorio y no he recibido ninguna excepción. Estoy usando Windows 7 en ambos. No está bloqueado por un firewall. He desactivado mis firewalls y todavía tengo este problema.¿Qué debo hacer o verificar para resolver este problema?
EDITAR salidas de impresión de ruta:
===========================================================================
Interface List
15...e4 d5 3d 08 cb 83 ......Killer Wireless-N 1103 Network Adapter
13...d0 df 9a b5 73 dc ......Bluetooth Device (Personal Area Network)
11...d4 be d9 00 10 65 ......Atheros AR8151 PCI-E Gigabit Ethernet Controller (NDIS 6.20)
1...........................Software Loopback Interface 1
17...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
16...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
18...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
19...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #3
===========================================================================
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.191 25
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
192.168.0.0 255.255.255.0 On-link 192.168.0.191 281
192.168.0.191 255.255.255.255 On-link 192.168.0.191 281
192.168.0.255 255.255.255.255 On-link 192.168.0.191 281
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 192.168.0.191 281
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.0.191 281
===========================================================================
Persistent Routes:
None
IPv6 Route Table
===========================================================================
Active Routes:
If Metric Network Destination Gateway
17 58 ::/0 On-link
1 306 ::1/128 On-link
17 58 2001::/32 On-link
17 306 2001:0:4137:9e76:28f3:2721:524f:e2ef/128
On-link
15 281 fe80::/64 On-link
17 306 fe80::/64 On-link
17 306 fe80::28f3:2721:524f:e2ef/128
On-link
15 281 fe80::68c1:bc79:fefa:88a2/128
On-link
1 306 ff00::/8 On-link
17 306 ff00::/8 On-link
15 281 ff00::/8 On-link
===========================================================================
Persistent Routes:
None
EDITAR Como @PhilippeLM y @ beny23 me hicieron darme cuenta, establecer la variable del sistema java java.net.preferIPv4Stack en verdadero resuelve mi problema. Sin embargo, quiero una solución permanente. No quiero especificar la variable del sistema cada vez que ejecuto una aplicación Java.
Esto es lo que he intentado sin suerte una vez más:
Configurar las preferencias de mi máquina para que prefiera IPv4 siguiendo estos pasosAgregando la líneajava.net.preferIPv4Stack=true
alnet.properties
presentar en%JAVA_HOME%\jre\lib
.¿Hay algo más que pueda probar?