Java-сервер и клиент - невозможно построить InetAddress - PullRequest
0 голосов
/ 30 июня 2011

Я пытаюсь написать серверную и клиентскую программу на Java. Я не делал этого раньше, поэтому я решил начать с примеров, приведенных по ссылкам ниже.

Код сервера: http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/Code/SocketServer.java

Код клиента: http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/Code/SocketClient.java

Я сделал несколько изменений с точки зрения именования, но основные функции должны быть такими же. Серверное приложение работает нормально, но клиентское приложение создает исключение UnknownHostException. Я подумал, что проблема, возможно, связана с тем, что IP-адрес, используемый в обоих приложениях, недействителен. Я запускаю это на Mac, и я не претендую на звание эксперта по IP-адресам, но я подумал, что было бы неплохо написать код, который фактически распечатал бы IP-адрес, который публикуется ниже, на случай, если это вообще полезно.

java.net.InetAddress address = java.net.InetAddress.getLocalHost();
System.out.println("IP Address  :"+address.getHostAddress());

Однако этот код возвращает некоторое число, например 463.827.201.789 (не совсем так, но только для демонстрационных целей), которое определенно не работает в качестве параметра используемого конструктора Socket.

В любом случае, я не знаю, в чем проблема, и мне нужна помощь здесь.

Ответы [ 2 ]

0 голосов
/ 01 июля 2011

В строке

 socket = new Socket("kq6py", 4444);

что вы предоставили вместо "kq6py"? Предполагая, что ваша серверная программа работает на том же компьютере, что и ваш клиент - Вы должны попробовать "localhost" или "127.0.0.1"

0 голосов
/ 01 июля 2011

При печати объектов InetAddress метод getHostAddress () печатает текстовое представление адреса (как указано в API, отметьте http://download.oracle.com/javase/6/docs/api/java/net/InetAddress.html#getHostAddress()). Это должен быть IP-адрес вашего компьютера? (Или, возможно, 127.0.0.1,адрес, который всегда указывает на ваш локальный компьютер).

Класс Socket (http://download.oracle.com/javase/6/docs/api/java/net/Socket.html) принимает номер порта InetAddress + в конструкторе, поэтому вы должны иметь возможность передать ему InetAddress, а также первый параметр и номер порта.что ваш SocketServer слушает. (Каждый сокет сервера открывает слушателя на номер порта, который вы можете выбрать сами, проверьте http://download.oracle.com/javase/6/docs/api/java/net/ServerSocket.html).

...