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:@"%@我说:%@\n",_textView.text,_sendField.text];
    
}

 

udp学习:

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

看了代码就能明白了

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

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

posted on 2014-03-31 16:55  chenhanqing_blcu  阅读(255)  评论(0编辑  收藏  举报