zoukankan      html  css  js  c++  java
  • 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  }

  • 相关阅读:
    HDU4777 Rabbit Kingdom
    HDU6200 mustedge mustedge mustedge
    HDU6187 Destroy Walls
    最长公共上升子序列的学习
    关于约瑟夫问题的学习
    洛谷1602 Sramoc问题
    HDU2089 不要62
    poj3532 Round Numbers
    洛谷1014 Cantor表
    花盆Flowerpot[USACO12MAR]
  • 原文地址:https://www.cnblogs.com/liuzhi20101016/p/9888451.html
Copyright © 2011-2022 走看看