美文网首页
iOS-基于TCP连接<Scoket-服务端>

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

作者: 学_iOS | 来源:发表于2017-01-09 16:50 被阅读184次

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

    相关文章

      网友评论

          本文标题:iOS-基于TCP连接<Scoket-服务端>

          本文链接:https://www.haomeiwen.com/subject/eulhbttx.html