Отказано в соединении от клиента к серверу

Я изучаю Sockets в Java, и мне не хватает только того, как получить ответ от сервера.

Следуя инструкциям " Как отправить объект массива строк" и " Как отправить и получить сериализованный объект в канале сокета", я пытаюсь попросить пользователя выбрать столько, сколько он хочет, из вариантов:

1 - 2 - 3 - 4

А затем я хочу разделить и отправить их в виде массива на сервер, где сервер должен отправить обратно количество вариантов, выбранных пользователем.

Например, если пользователь выбрал

2 3 4 1 2 3 4 1

Сервер должен вернуться

8

сервер отправляет ответ нормально, но на стороне клиента я получаю сообщение об ошибке:

Исключение в потоке "main" java.net.ConnectException: в соединении отказано: подключиться на java.net.DualStackPlainSocketImpl.connect0(собственный метод) на java.net.DualStackPlainSocketImpl.socketConnect(неизвестный источник) на java.net.AbstractPlainSocketImpl.doConnect(неизвестно) Источник) на java.net.AbstractPlainSocketImpl.connectToAddress(неизвестный источник) на java.net.AbstractPlainSocketImpl.connect(неизвестный источник) на java.net.PlainSocketImpl.connect(неизвестный источник) на java.net.SocksSocketImpl.connect(неизвестный источник) на java.net.Socket.connect(неизвестный источник) на java.net.Socket.connect(неизвестный источник) на java.net.Socket.(неизвестный источник) на java.net.Socket.(неизвестный источник) на ClientClass.main(ClientClass.java:26)

Я не уверен, почему проблема. Любая помощь?

Мой клиент:

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Scanner;

public class ClientClass {

    public static void main(String args[]) throws IOException, ClassNotFoundException 
    {
        // take order and convert it to array of choices
        Scanner myScanner = new Scanner(System.in); // take from user
        System.out.println("Enter all your choices seperated by space:");
        System.out.println("Choices are: 1- 2- 3- 4");
        String orderString = myScanner.next();
        orderString += myScanner.nextLine();
        String orderArray[] = orderString.split(" ");

        // send request to server
        Socket mySocket = new Socket("127.0.0.1", 4444); // create a socket
        ObjectOutputStream out = new ObjectOutputStream(mySocket.getOutputStream());
        out.writeObject(orderArray);  

       // get response from server
       InputStream is = mySocket.getInputStream();
       InputStreamReader isr = new InputStreamReader(is);
       BufferedReader br = new BufferedReader(isr);
       String message = br.readLine();
       System.out.println("Message received from the server : " +message);

    }
}

Мой сервер:

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.channels.SocketChannel;
import java.util.Scanner;

public class ServerClass {

    public static void main(String args[]) throws IOException, ClassNotFoundException
    {
        // receive
        ServerSocket myServerSocket = new ServerSocket(4444); // create a server socket
        Socket mySimpleSocket = myServerSocket.accept(); // accept requests
        ObjectInputStream ois = new ObjectInputStream(mySimpleSocket.getInputStream());
        String[] choices = (String[]) ois.readObject();


       // send back response
       OutputStream os = mySimpleSocket.getOutputStream();
       OutputStreamWriter osw = new OutputStreamWriter(os);
       BufferedWriter bw = new BufferedWriter(osw);
       bw.write(choices.length);
       System.out.println("Message sent to the client is "+choices.length);
       bw.flush();

    }
}

1 ответ

Решение

сервер отправляет ответ нормально

Мусор. Сервер даже не получает входящее соединение, не говоря уже о чтении запроса, не говоря уже об отправке ответа.

но на стороне клиента я получаю ошибку:

Exception in thread "main" java.net.ConnectException: Connection refused: connect at 

На этом свидетельстве сервер даже не работал. Конечно, не работает на том же хосте, что и клиент, что требуется для new Socket("127.0.0.1", 4444),

Другие вопросы по тегам