Как отправить измененные байты через сокет Dart? - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть данные, как показано ниже.

List<int> bytes: [231, 199, 287, 286, 305, 304, 351, 350, 246, 214, 252, 220, 13, 10];

Я считаю, что должен использовать socket.add (bytes) ; Но я не уверен, что это правильный путь.

Основная цель - отправить не закодированную строку на сервер, и, кажется, я могу сделать это, отправив в виде байтов.

Указанные выше байты будут заменены на кодовую страницу IBM CP850 (байт).

Пример: [231] будет заменено на [167]. И у меня нет проблем с этим.

Также в документации указано, что мне нужно использовать flush и done, чтобы получить любые ошибки, если они сгенерированы этим вызовом.

Кто-нибудь знает хороший пример для этого?

Примечание: Для строки я использую приведенный ниже код. Но мне нужно изменить код для отправки байтов в сокет.

 _socket = await Socket.connect('192.168.22.120', 3000);
  _socket.handleError((data) {
    _secureResponse = "$_errorData}";
  });

  await for (var data in _socket) {
    _reply = new String.fromCharCodes(data).trim();

    int dataLen;
    dataLen = _reply.length;

    int carriageReturnPosition;
    carriageReturnPosition = dataLen - 2;

    int newLinePosition;
    newLinePosition = dataLen - 1;

    if (_reply.substring(carriageReturnPosition, newLinePosition) == '\r' &&
        _reply.substring(newLinePosition, dataLen) == '\n') {
      _socket.close();
    }
  }
...