GCDAsyncSocket - данные не принимаются - AsyncSocket работает нормально

Я подключил клиента 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 идеи]

сделал не так?

Я поместил сообщение о коде очков для этого, но там нет никакой активности, поэтому не уверен, получу ли я ответ или нет.

В идеале, если у кого-то есть образец кода, который получает, работает, это было бы здорово! спасибо!

6
задан Mark Worsnop 1 July 2011 в 13:55
поделиться