接 CocoaAsyncSocket 學(xué)習(xí) (一)
實(shí)現(xiàn)自動(dòng)邏輯回復(fù)功能
- 在 監(jiān)聽接入客戶端的方法中 監(jiān)聽到接入后 寫入客戶端數(shù)據(jù)
- (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket {
NSLog(@"服務(wù)端 %@", sock);
NSLog(@"客戶端 %@", newSocket);
[self.clientSockets addObject:newSocket];
NSMutableString *mutableStr = [NSMutableString string];
[mutableStr appendString:@"歡迎來到10086在線服務(wù),請輸入下面的數(shù)字選擇服務(wù)\n"];
[mutableStr appendString:@"[0]在線充值\n"];
[mutableStr appendString:@"[1]在線投訴\n"];
[mutableStr appendString:@"[2]優(yōu)惠信息\n"];
[mutableStr appendString:@"[3]special services\n"];
[newSocket writeData:[mutableStr dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:0];
// 監(jiān)聽客戶端是否寫入數(shù)據(jù)
// timeOut: -1 暫時(shí)不需要 超時(shí)時(shí)間 tag暫時(shí)不需要 傳0
[newSocket readDataWithTimeout:-1 tag:0];
}
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
NSLog(@"客戶端 %@", sock);
NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"data --- %@", dataStr);
NSInteger index = [dataStr integerValue];
NSString *responseStr = nil;
switch (index) {
case 0:
responseStr = @"充值服務(wù)暫停中...\n";
break;
case 1:
responseStr = @"投訴服務(wù)暫停中...\n";
break;
case 2:
responseStr = @"優(yōu)惠信息沒有...\n";
break;
case 3:
responseStr = @"SB 怎么可能有特殊服務(wù)...\n";
break;
case 4:
responseStr = @"退出成功...\n";
break;
default:
responseStr = @"指令無效...\n";
break;
}
#####退出連接的話 將客戶端socket 從數(shù)組中移除即可
if (index == 4) {
[self.clientSockets removeObject:sock];
}
// 服務(wù)端接收到客戶端發(fā)送的數(shù)據(jù)之后 返回?cái)?shù)據(jù)給 客戶端
// 我們將接受到的數(shù)據(jù)返回回去
[sock writeData:[responseStr dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:0];
[sock readDataWithTimeout:-1 tag:0];
}
