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

  • 相关阅读:
    05-java学习-循环结构
    04-java学习-选择结构
    03-java学习-基本数据类型-运算符-键盘接收用户输入
    A02-java学习-classpath配置-标识符-java变量类型
    A01-java学习环境准备
    20190215面试-C#操作外设-多线程-shocket
    装饰者模式
    状态模式
    DllImport学习
    网络编程(一)----基础知识、数据流套接字
  • 原文地址:https://www.cnblogs.com/AbelChen1991/p/3636138.html
Copyright © 2011-2022 走看看