Я подключил клиент 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]
Есть идеи, что я сделал не так?
Для этого я поместил сообщение в коде изумленных взглядов, но никаких действий нет, поэтому не уверен, получу ли я ответ или нет.
В идеале, если у кого-то есть пример кода, который получает, это будет здорово! спасибо!