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

Я разрабатываю программу передачи файлов с сервера на клиент на 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 (если бы это было на стороне сервера, сокет приема соединения мог быть назначен начать запись после установления соединения.)


person emenike    schedule 25.07.2013    source источник
comment
Какая польза от ToClient? В чем разница между ним и is?   -  person tbodt    schedule 25.07.2013
comment
ToClient заполняет массив байтов полученным размером файла под этим кодом.   -  person emenike    schedule 25.07.2013


Ответы (1)


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

person tbodt    schedule 25.07.2013
comment
как новичок в программировании сокетов, было очень полезно знать, что, как я думал, 1 сокет будет сосредоточен на чтении, а 1 - на записи. - person emenike; 25.07.2013