Я реализую клиент-серверное приложение. Я новичок в этом. Я попытался следующие статьи A Simple Java TCP Server and TCP ClientПростой Java-клиент-сервер: клиентский клиент подключается к серверу
На самом деле я уже есть клиент, который работает (не мой код)
Так я просто нужно написать сервер для этого.
Также мой сервер будет подключен только одним клиентом, поэтому я действительно не вижу необходимости поддерживать несколько клиентов.
Как я вижу, используя netstat -a
, создается сервер прослушивания, но клиент не может подключиться к нему. Сообщение об ошибке не выдано ни о том, что является сюрпризом. Как будто вызов для соединения игнорируется. На клиенте никаких исключений не наблюдается.
Мой сервер код (возможно Неисправен)
private static void create_request_server(int requestport) {
// TODO Auto-generated method stub
try {
ServerSocket s1 = new ServerSocket(requestport);
requestsocket = s1.accept();
// Do some stuff . But this accept never breaks.
} catch (Exception e) {
e.printStackTrace();
}
}
Правильный Клиент
try {
fRequestSocket = new Socket("localhost", requestPort);
fRequestWriter = new PrintWriter(fRequestSocket.getOutputStream());
fRequestReader = new BufferedReader(new InputStreamReader(fRequestSocket.getInputStream()));
} catch (UnknownHostException e) {
abort(" UnknownHostException", e);
} catch (IOException e) {
abort(" IOException", e);
}
FYI
И мой клиент и сервер находятся на локальном хосте
Является ли мой сервер ужасно неправильным?
EDIT (Закрыть ответить)
SO с помощью ценных замечаний, размещенных ниже, я понял, что проблема есть. Проблема заключается между LOCALHOST & 127.0.0.1
Так я сделал netstat -a
и увидел, что сервер создается следующим образом:
TCP [::]:56283 Sin-Host LISTENING
вместо
TCP 127.0.0.1:56283 Sin-Host LISTENING
Таким образом, клиент не может для подключения. Любые идеи о том, как сделать привязку сервера o 127.0.0.1
Какие-либо изменения, которые могут быть сделаны для ServerSocket s1 = new ServerSocket(requestport)
?
@ Th0rndike клиента ** это ** запрашивающего один с 'нового сокета («локальный» , requestPort); 'call. Javadoc: _Создает сокет потока и ** подключает его к указанному номеру порта по указанному IP-адресу ** ._ – BackSlash
@BackSlash да, вы правы .. это вызов – rockstar
@BackSlash Да. Комментарий удален :) – Th0rndike