一:前言(本文为TCP服务端)
TCP首先要服务器开放一个端口 然后客户端去连接服务端的IP地址和端口号 连接成功之后再进行数据传输 要经历三次握手
二:代码在GitHub
1.需要的工具类 自行下载
2.部分代码及其截图
<1>创建TCP服务端Socket
self.serverSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
//开始监听(开放哪一个端口)
NSError *error = nil;
BOOL result = [self.serverSocket acceptOnPort:[@"8000" integerValue] error:&error];
if (result) {
//开放成功
NSLog(@"开放成功");
}else{
//开放失败
NSLog(@"开放失败");
}
<2>发送数据
[self.clientSocket writeData:data withTimeout:-1 tag:0];
<3>代理
#pragma mark socketdelegate
//监听到客户端socket链接
//当客户端链接成功后,生成一个新的客户端socket
- (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket{
NSLog(@"连接成功");
//connectedHost:地址IP
//connectedPort:端口
NSLog(@"%@",[NSString stringWithFormat:@"链接地址:%@",newSocket.connectedHost]);
//保存客户端socket
self.clientSocket = newSocket;
[self.clientSocket readDataWithTimeout:-1 tag:0];
}
//成功读取客户端发过来的消息
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
NSString *message = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"成功读取客户端发过来的消息 = %@",message);
[self.clientSocket readDataWithTimeout:-1 tag:0];
}
- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag{
NSLog(@"消息发送成功");
}