Клиент - серверная сокетная передача байтов - PullRequest
0 голосов
/ 28 февраля 2011

Я отправляю байтовый массив с клиента (Android)

byte[] data = new byte[7];
    data[0] = "{".getBytes()[0];
    data[1] = "{".getBytes()[0];
    data[2] = (byte) 0xd1;
    data[3] = (byte) 0x01;
    data[4] = (byte) 0x00;//0xd1 + 0x00;
    data[5] = "}".getBytes()[0];
    data[6] = "}".getBytes()[0];
    os.write(data);  // os - Output stream

и на сервере я его слушаю ...

InputStream is = this.socket.getInputStream();
    DataOutputStream os = new DataOutputStream(this.socket.getOutputStream());

    // Set up input stream filters.
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);

    // Get the request line of the SMS request message.
    String requestLine = br.readLine();
    System.out.println(requestLine + "<---- Received message");

Когда я отправляю такие данные .. br.readLine () не вызывается или застревает .. Когда я отправляю только строку от клиента

os.writeBytes («Автоматизированное сообщение»); все работает нормально ...

1 Ответ

1 голос
/ 28 февраля 2011

readLine (), вероятно, ожидает завершения строки перед его возвратом. Вы можете попробовать следующее:

byte[] data = new byte[8];
    data[0] = "{".getBytes()[0];
    data[1] = "{".getBytes()[0];
    data[2] = (byte) 0xd1;
    data[3] = (byte) 0x01;
    data[4] = (byte) 0x00;//0xd1 + 0x00;
    data[5] = "}".getBytes()[0];
    data[6] = "}".getBytes()[0];
    data[7] = "\r".getBytes()[0];
    os.write(data);  // os - Output stream
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...