【发布时间】:2011-07-01 13:17:43
【问题描述】:
我让 iPhone 客户端使用 GCDAsyncSocket 连接到服务器。服务器在 Windows 服务器上运行 .Net。连接很好,发送数据也很好。
然后我告诉客户端在发送后直接进入接收...
[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]
任何想法我做错了什么?
我为此在护目镜代码上发了一个帖子,但没有任何活动,所以不确定我是否会得到答案。
理想情况下,如果有人有接收工作的示例代码,那就太好了!谢谢!
【问题讨论】:
标签: iphone objective-c sockets asyncsocket