zoukankan      html  css  js  c++  java
  • Socket的tcp和udp连接

    直接学习:代码会在末尾给出链接

    导入第三方包

    AsyncSocket.h

      //客户端
        AsyncSocket * _sendSocket;
        //服务端
        AsyncSocket * _recvSocket;
        NSMutableArray * _socketArray;
    

     创建两个套接字对象,一个用于发送套接字 一个用于接收套接字  

    首先讲一下tcp的使用方法

    使用tcp传输  必须得有服务端和客户端 ,服务端必须先打开,这样才可以接收客户端发过来的信息。

    服务端的创建:

    //5678端口上等待用户的连接如果有连接,5678分配一个新的端口给它进行数据的传输

        [_recvSocketacceptOnPort:5678error:nil];

    如果有用户连接该服务端的5678端口,则会首先调用didAcceptNewSocket:协议函数,然后会调用读取数据的函数didReadData:函数 取得数据。

    客户端的创建:

      //连接到服务端的5678端口上,也就是刚才服务端创建的端口

        [_sendSocketconnectToHost:_ipField.textonPort:5678withTimeout:30error:nil];

    //连接上不管客户端还是服务端只要连接都是会调用这个方法的

    - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port{

        NSLog(@"连接成功");

    }

     如果连接上了服务器上得端口,就会调用服务端的didAcceptNewSocket:函数,并将该套接字存进专门存储的数组里,然后服务器didReadData:会一直等待该数据信息。

    然后调用传输数据的函数,这样就能传输数据了

    - (IBAction)sendText:(id)sender {
        NSData * data=[_sendField.text dataUsingEncoding:NSUTF8StringEncoding];
        //发送消息
        [_sendSocket writeData:data withTimeout:30 tag:0];
        _textView.text=[NSString stringWithFormat:@"%@我说:%@
    ",_textView.text,_sendField.text];
        
    }
    

    udp学习:

    udp的学习比较简单,udp是不面向特定对象的链接,省去了tcp中三次握手的关节,可以直接发送包数据,速度快,但是容易丢包

    看了代码就能明白了

    tcp代码:http://download.csdn.net/detail/chenscda/7125229

    udp代码:http://download.csdn.net/detail/chenscda/7125585

  • 相关阅读:
    清理git提交记录并不能达到真正硬盘“瘦身”
    virtualbox虚拟机异常暂停
    百兆带宽升千兆-番外篇
    流水文之百兆带宽升千兆
    OSS设置静态网站托管+CDN加速OSS域名
    每日一坑-exsi中win虚拟机调分辨率
    nginx筛选字段+excel统计
    树莓派使用Samba共享文件
    chrome无法使用独显解决
    解决jdk16安装后无jre目录的问题
  • 原文地址:https://www.cnblogs.com/AbelChen1991/p/3636138.html
Copyright © 2011-2022 走看看