Исключение нулевого указателя при передаче файлов между сервером и клиентом

Я разрабатываю программу передачи файлов между серверами на java и не могу понять, как исправить следующий код, так как я не очень разбираюсь в программировании сокетов. Код - это коды клиента:

String receiverIP = null;
    int serverPort = 0;
    hostIP = args[0];
    serverPort = Integer.parseInt(args[1]);
    String fileToSend = args[2]; 
    byte[] aByte = new byte[1];
    int bytesR;
    Socket clientSocket = null;
    Socket connectSocket = null;
    BufferedOutputStream ToClient = null;
    InputStream is = null;

    try {
        ToClient = new BufferedOutputStream(connectSocket.getOutputStream());
        clientSocket = new Socket(hostIP, serverPort);
        is = clientSocket.getInputStream();
    } catch (IOException ex) {
        System.out.println(ex);
    }

Что касается моей проблемы, я получаю исключение нулевого указателя в строке 14 (несомненно, так как в настоящее время connectSocket имеет значение null), но я понятия не имею, что я могу назначить для connectSocket(если бы он был на стороне сервера, сокет для принятия подключения мог быть назначен начать писать после установления соединения.)

1 ответ

Решение

Вопреки тому, что вы, похоже, считаете, вам не нужны два отдельных сокета для чтения и записи на сервер. Одной розетки будет достаточно. Вы можете позвонить getInputStream способ получить поток для чтения с сервера, и getOutputStream получить поток для записи на сервер. Вам не нужны две розетки, только одна.

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