一:前言(本文为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 }