Я подключил клиента iPhone к серверу с помощью GCDAsyncSocket. Сервер работает под управлением .Net на сервере Windows. Соединение хорошее, и данные тоже хорошо передаются.
Затем я говорю клиенту перейти на прием сразу после отправки ...
[sock readDataToData:[GCDAsyncSocket LFData] withTimeout:15 tag:1];
У меня также есть эта настройка для приема:
- (void)onSocket:(GCDAsyncSocket *)sock didReadData:(NSData *)data
withTag:(long)tag
, а также:
- (NSTimeInterval)socket:(GCDAsyncSocket *)sock shouldTimeoutReadWithTag:(long)tag
] Если я жду тайм-аута, вызывается метод тайм-аута.
Если я отправляю данные с сервера, тайм-аут не вызывается, поэтому я предполагаю клиент что-то видел, но на на стороне клиента.
Я также добавил:
- (void)socket:(GCDAsyncSocket *)sock didReadPartialDataOfLength: (NSUInteger)partialLength tag:(long)tag
надеюсь, что увижу частичный пакет, но он не запускается либо.
Как я уже упоминал выше, тайм-аут не срабатывает, если я отправляю что-то от сервера к клиенту. Однако я бы подумал также будет тайм-аут, если он не получил терминатор характер. Я также пробовал читать длиной 3, но это не помогло. не имеет значения.
Проблема в GCDAsyncSocket. AsyncSocket, похоже, работает нормально.
Может быть, инициализация неправильная?
dispatch_queue_t mainQueue = dispatch_get_main_queue ();
asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate: self delegateQueue: mainQueue идеи]
сделал не так?
Я поместил сообщение о коде очков для этого, но там нет никакой активности, поэтому не уверен, получу ли я ответ или нет.
В идеале, если у кого-то есть образец кода, который получает, работает, это было бы здорово! спасибо!