java.net.SocketException: недопустимый аргумент: connect

Мой новый ноутбук (Alienware m17x) выдает исключение java.net.SocketException: Invalid argument: connect , когда я запускаю следующий базовый код:

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

Каждый раз, когда я запускаю Client.java (после запуска Server.java), я получаю это исключение сокета. Вот полный след исключения:

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.(Unknown Source)
    at java.net.Socket.(Unknown Source)
    at Client.main(Client.java:5)

Я пробовал несколько вещей, но мне не повезло: всегда выдается исключение. Вот что я пришел к выводу:

  • Изменение номеров портов ничего не меняет.
  • Это не проблема с сетью. Я получил исключение в школе и дома.
  • Я переустановил JVM и JDK, но безуспешно.
  • Это происходит только на одной машине. Я запустил тот же код на своем рабочем столе, и у меня не было никаких исключений. Я использую Windows 7 на обоих.
  • Он не блокируется брандмауэром. Я отключил брандмауэры, но проблема не исчезла.

Что мне делать или проверять, чтобы решить эту проблему?

РЕДАКТИРОВАТЬ: выходные данные для печати маршрута:

===========================================================================
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

РЕДАКТИРОВАТЬ: Как @PhilippeLM и @ beny23 заставили меня понять, установка для системной переменной Java java.net.preferIPv4Stack значения true решает мою проблему. Однако мне нужно постоянное исправление. Я не хочу указывать системную переменную каждый раз, когда я запускаю Java-приложение.

Вот то, что я снова безуспешно пытался:

  • Установка предпочтений моего компьютера для предпочтения IPv4, выполнив эти шаги
  • Добавление строки java.net.preferIPv4Stack = true в файл net.properties в % JAVA_HOME% \ jre \ lib .

Что еще я могу попробовать?

14
задан abourg28 12 December 2011 в 19:59
поделиться