Что метод Socket.getInputStream (). read () будет делать в Java? - PullRequest
0 голосов
/ 05 августа 2011

У меня есть код, подобный следующему:

class ConnectionHandler implements Runnable {

private Socket socket;
private InputStream is;
private OutputStream os;
private  Packetizer packetizer;
boolean closed = true;

public ConnectionHandler(Socket socket, ProtocolHandler ph) {
    this.socket = socket;
    try {
        is = socket.getInputStream();
        os = socket.getOutputStream();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
Thread t = new Thread(this);
    t.start();
    //log.debug("ConnectionHandler const done");
}

public void run() {
    try
    {
        //
        // Read a message sent by client application
        //

        closed = false;
        while (!closed)
        {
            if (is.available() > 0) 
            {
                byte c = (byte) (0xff & is.read());
                //log.debug("r " + c);

            } else {
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    //e.printStackTrace();
                }
            }
        }

        is.close();
        os.close();
        socket.close();

    } catch (IOException e) {
    }
}

У меня вопрос: для чего это нужно -> байт c = (байт) (0xff & is.read ());

Пожалуйста, дайте мне знать ваши мысли.

Пожалуйста, помогите мне.Заранее спасибо.

1 Ответ

4 голосов
/ 05 августа 2011

Он будет читать один байт данных из сокета.Часть 0xff & ... здесь не нужна (или на самом деле плохая идея), так как InputStream.read будет возвращать значение только в диапазоне 0-255, если только оно на самом деле не достигнет конца данных, в этом случае возвращается -1.

(Обычно 0xff & ... используется для преобразования значения byte со знаком в значение int без знака. Здесь вход представляет собой int, а результат является byte переменной, хотя ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...