Socket学习之(一) 服务器监听客户端

准备:

项目步骤:

  • 创建一个终端项目,模拟10086服务器监听
  • 导入cocoaAsyncSocket中的GCDAsyncSocket类
  • 编译是否报错

开发过程

  • 创建一个继承自NSObject的BLEServerListen类,
  • 在main.m创建一个BLEServerListen对象,并调用监听方法
  BLEServerListen *serverListen = [[BLEServerListen alloc]init];
        [serverListen startListen];
        
  //防止程序死掉 保证程序一致在运行
  
 [[NSRunLoop mainRunLoop]run];

  • 在BLEServerListen类中,定义startListen对象方法,监听客户端连接,.m文件中的具体代码实现
- (void)startListen {
    
    //创建监听服务器 专门用来负责监听有没有客户端服务器连接
    GCDAsyncSocket *serverSocket = [[GCDAsyncSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_global_queue(0, 0)];
    
    //绑定客户端 并开启10086服务服务 5288是端口号 端口号要大于1024
    NSError *error = nil;
    [serverSocket acceptOnPort:5288 error:&error];
    
    if (!error) {
        NSLog(@"连接10086成功");
    }else {
        NSLog(@"连接10086失败");
    }
    //延长生命周期 不然serverSocket会被释放
    self.serverSocket = serverSocket;
    
}
  • 利用终端去连接服务器

    1.打开终端输入 telnet 本机IP 10086端口号 例如:telnet 192.168.1.22 5288

    连接后出现:
    Trying 192.168.1.22...
    

Connected to localhost.
Escape character is '^]'.


2.此时可以进行数据的发送了。


*  客户端连接后调用的代理方法

// 当有客户端连接的时候调用

  • (void)socket:(GCDAsyncSocket *)serverSocket didAcceptNewSocket:(GCDAsyncSocket *)clientSocket {

    NSLog(@"serverSocket:%@ clientSocket:%@",serverSocket,clientSocket);

    //解决clientsocket是局部变量导致连接关闭的状况
    [self.clientSocket addObject:clientSocket];

    //-1表示永不超时
    [clientSocket readDataWithTimeout:-1 tag:0];

}


* 接收到客户端发送数据调用的方法


//读取客户端的数据

  • (void)socket:(GCDAsyncSocket *)clientSocket didReadData:(NSData *)data withTag:(long)tag {

    NSString *dataStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

    NSLog(@"%@",dataStr);

    [clientSocket readDataWithTimeout:-1 tag:0];
    }


这是一个简单的服务器端的监听连接,socket的用途之强大。有兴趣的同学一起学习。
详细代码下载:https://github.com/BlueEagleBoy/ServerSocket
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一: 网络各个协议:TCP/IP、SOCKET、HTTP 网络七层由下往上分别为物理层、数据链路层、网络层、传输层...
    iYeso阅读 5,275评论 0 13
  • 地址:http://www.cnblogs.com/taoxu/p/7064103.html 写在准备动手的时候:...
    wvqusrtg阅读 8,052评论 1 19
  • 最近在学习Python看了一篇文章写得不错,是在脚本之家里的,原文如下,很有帮助: 一、网络知识的一些介绍 soc...
    qtruip阅读 7,694评论 0 6
  • 今天中午我妈妈的快递到了我帮我妈妈下去拿快递,在回来的路上我看见了一位阿姨,我跟阿姨打招呼,然后我问阿姨他是几楼的...
    碎片幻影阅读 5,925评论 0 0
  • hjj
    LOOZSY阅读 2,047评论 0 0