簡體   English   中英

AsyncSocket:始終監聽傳入的TCP消息

[英]AsyncSocket: always listen to incoming TCP messages

我想擁有一個通過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];

然后在閱讀委托方法中:

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

我立即立即再次調用readDataWithTimout:tag:是否正確? 還是有一種(更好的)方式始終收聽傳入的消息?

對於您正在做的事情,這很好。 您需要在-didReadData中調用-[readDataWithTimeout],因為否則,您只會收到來自服務器的第一條消息。 GCDAsyncSocket是通過這種方式設計的,因為還有其他幾種可以接收傳入數據的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM