1. 程式人生 > >iOS-基於TCP連線<Scoket-服務端>

iOS-基於TCP連線<Scoket-服務端>

一:前言(本文為TCP服務端)

TCP首先要伺服器開放一個埠 然後客戶端去連線服務端的IP地址和埠號 連線成功之後再進行資料傳輸 要經歷三次握手

二:程式碼在GitHub

1.需要的工具類 自行下載

2.部分程式碼及其截圖

<1>建立TCP服務端Socket

1     self.serverSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
 1 //開始監聽(開放哪一個埠) 
 2 NSError *error = nil; 
3 BOOL result = [self.serverSocket acceptOnPort:[@"8000" integerValue] error:&error]; 4 5 if (result) { 6 7 //開放成功 8 NSLog(@"開放成功"); 9 10 }else{ 11 12 //開放失敗 13 NSLog(@"開放失敗"); 14 }

<2>傳送資料

1  [self.clientSocket writeData:data withTimeout:-1 tag:0];

<3>代理

 1 #pragma
mark socketdelegate 2 //監聽到客戶端socket連結 3 //當客戶端連結成功後,生成一個新的客戶端socket 4 5 - (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket{ 6 7 NSLog(@"連線成功"); 8 //connectedHost:地址IP 9 //connectedPort:埠 10 NSLog(@"%@",[NSString stringWithFormat:@"連結地址:%@",newSocket.connectedHost]);
11 12 //儲存客戶端socket 13 self.clientSocket = newSocket; 14 [self.clientSocket readDataWithTimeout:-1 tag:0]; 15 } 16 17 //成功讀取客戶端發過來的訊息 18 - (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{ NSString *message = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 19 NSLog(@"成功讀取客戶端發過來的訊息 = %@",message); 20 [self.clientSocket readDataWithTimeout:-1 tag:0]; 21 22 } 23 24 - (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag{ 25 NSLog(@"訊息傳送成功"); 26 27 }