iOS-基于TCP连接<Scoket-服务端>

2017-01-09  本文已影响184人  学_iOS

一:前言(本文为TCP服务端)

TCP首先要服务器开放一个端口 然后客户端去连接服务端的IP地址和端口号 连接成功之后再进行数据传输 要经历三次握手

二:代码在GitHub

1.需要的工具类 自行下载
Scoket.png
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(@"消息发送成功");
}
TCP-Server.png
上一篇下一篇

猜你喜欢

热点阅读