gpt4 book ai didi

tcp - 异步套接字 : always listen to incoming TCP messages

转载 作者:可可西里 更新时间:2023-11-01 02:48:51 24 4
gpt4 key购买 nike

我想要一个通过 TCP 连接到服务器然后持续监听传入数据的服务。我正在使用 CocoaAsyncSocket我正在以下列方式使用它:

self.socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *err = nil;
if (![self.socket connectToHost:@"..." onPort:... error:&err]) {
return;
}

[self.socket readDataWithTimeout:-1 tag:1];

然后在读取委托(delegate)方法中:

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
NSLog(@"%@", data);
[self.socket readDataWithTimeout:-1 tag:1];
}

我立即再次调用 readDataWithTimout:tag: 是否正确?或者是否有一种(更好的)方式来始终收听传入的消息?

最佳答案

对于您正在做的事情,这很好。你需要打电话-didReadData 中的 -[readDataWithTimeout],否则您只会收到来自服务器的第一条消息。 GCDAsyncSocket 就是这样设计的,因为还有一些其他方法可以接收传入的数据。

关于tcp - 异步套接字 : always listen to incoming TCP messages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29847936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com