GCDAsyncSocket連接成功收不到消息與GCDAsyncSocket自我debug

原因出在這個方法:[self.clientSocket readDataWithTimeout:-1 tag:0];


在連接成功的代理中:

//連接成功

-(void)socket:(GCDAsyncSocket*)sockdidConnectToHost:(NSString*)hostport:(uint16_t)port {

? ? NSLog(@"--連接成功--");

//必須加這個方法

? ? [self.clientSocket readDataWithTimeout:-1 tag:0];

}

在收到消息的代理中:

//收到的消息
-(void)socket:(GCDAsyncSocket*)sockdidReadData:(NSData*)datawithTag:(long)tag {

//也必須調(diào)用這個方法

? ? [self.clientSocket readDataWithTimeout:-1 tag:0];

//數(shù)據(jù)格式轉(zhuǎn)換

? ? NSString*recvStr;

? ? if(data) {

? ? ? ? recvStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

? ? }

? ? NSLog(@"%@",recvStr);

}

完整的代碼

#import?<GCDAsyncSocket.h>

@interface MYSocketHelper () < GCDAsyncSocketDelegate>

@property (nonatomic, strong) GCDAsyncSocket *clientSocket;

@end

-(void)asynSocketInit {

? ? self.clientSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_global_queue(0, 0)];

? ? NSError*err =nil;

? ? if (![self.clientSocket connectToHost:@"127.0.0.1" onPort: 60000 error:&err])? ?{

? ? ? ? NSLog(@"I goofed: %@", err);

? ? }?else?{

? ? ? ? [self.clientSocket writeData:[@"xxxx" dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:0];

? ? }

}

-(void)socket:(GCDAsyncSocket*)sockdidConnectToHost:(NSString*)hostport:(uint16_t)port {

? ? NSLog(@"--連接成功--");

? ? [self.clientSocket readDataWithTimeout:-1 tag:0];

}

-(void)socket:(GCDAsyncSocket*)sockdidReadData:(NSData*)datawithTag:(long)tag {

? ? [self.clientSocket readDataWithTimeout:-1 tag:0];

? ? NSString*recvStr;

? ? if(data) {

? ? ? ? recvStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

? ? }

? ? NSLog(@"%@",recvStr);

}

- (void)socket:(GCDAsyncSocket*)sockdidReadPartialDataOfLength:(NSUInteger)partialLengthtag:(long)tag {


}

-(void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err {


}

自測的話可以下載一個ssokit,模擬了socket服務端,能收發(fā)消息


ssokit界面

地址:127.0.0.1本機的地址,端口范圍 1024~65535。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • iPhone的標準推薦是CFNetwork 庫編程,其封裝好的開源庫是 cocoa AsyncSocket庫,用它...
    Ethan_Struggle閱讀 2,361評論 2 12
  • 相關概念: 單播、多播(組播)和廣播的區(qū)別 http://blog.csdn.net/wangerge/artic...
    三毛中隊長閱讀 4,277評論 0 1
  • OSI: 開放系統(tǒng)互連參考模型 (Open System Interconnect 簡稱OSI)是國際標準化組織(...
    JS_詩和遠方閱讀 303評論 0 0
  • 先UDP組播 socket 再TCP建立長連接 同一個局域網(wǎng)下,各設備提供udp socket監(jiān)聽服務,手機客戶端...
    蛋白質(zhì)corn閱讀 353評論 0 0
  • Socket的基本概念 1.定義 網(wǎng)絡上兩個程序通過一個雙向通信連接實現(xiàn)數(shù)據(jù)交互,這種雙向通信的連接叫做Socke...
    Geniusn閱讀 566評論 0 0

友情鏈接更多精彩內(nèi)容