IOS: AsyncSocket — механизм вызова метода readData

дела обстоят так:

Я использовал AsyncSocket для подключения к серверу. когда сервер отправит несколько байтов клиенту at a time, приложение вызовет метод (onSocket: didReadData: withTag:); Иногда из-за сети или по другой причине некоторые байты прибыли, а остальные байты прибыли позже (что означает задержку некоторых байтов). (timeOut = -1)

==================================

Вопрос: сколько раз вызывался метод (onSocket: didReadData: withTag:)?

1) только один раз - он будет автоматически ждать, пока байты не будут заполнены?

2) 2 или более раз - одни прибыли(вызывают), другие прибыли(вызывают)、、、、、 вот так?

===================================

какие мысли правильные? Пожалуйста, дайте мне несколько советов. Большое спасибо.


person traximus    schedule 28.09.2012    source источник


Ответы (1)


Хорошо, может быть, это просто так.

Передача данных по TCP: когда вы отправляете 1000 байт за раз, из-за задержки или по другим причинам вы можете сначала получить 900 байтов, но TCP-сокет будет автоматически ждать остальные 100 байтов. Поэтому, если я использую asyncSocket для передачи данных и установки времени ожидания, в течение этих секунд мне не нужно иметь дело с запаздывающими данными.

=========================

ИЗМЕНИТЬ

может быть, название вопроса не подходит, вопрос никого не волнует.

Вместо этого я использовал метод -readDataToLength:, сначала прочитав header.length данных и проанализировав их, а затем прочитав body.length данных;

person traximus    schedule 08.10.2012