Socket UDP通讯
2016-04-08 17:24
246 查看
UDP简单的分析以及TCP和Socket之间的区别
UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。
UDP不是面向连接的,UDP传送数据不需要和服务器连接,只需要知道ip和监听端口,不需要链接没有目的的socket,只是将数据报投递出去,不管接收方是否成功接收到,因此是一种不可靠的传输。
但是UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。
TCP:
是一种面向连接的传输控制协议(transform contorl protocol),必须要和服务器交互,具有高安全性,可靠性,需要和服务器进行三次握手,能根据具体网络拥堵情况进行延时。
Socket:
Socket有两种连接操作方式,面向连接的和面向无连接的。使用UDP就是面向无连接的,使用TCP就是面向连接的。使用UDP无需要指定一个socket目的地,而是用TCP必须要指定一个socket目的地,需要进行预链接,否则连接不到。
socket就像是API,二UDP/TCP就是协议,使用scoket来实现内容的传送。
UDP的通讯,我用的是AsyncUdpSocket文件,文件下载在http://blog.csdn.net/zhuxb523/article/details/51097728这篇文章中有介绍
代码是用于两个手机之间通过UDP进行通信传输
代码如下:
UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。
UDP不是面向连接的,UDP传送数据不需要和服务器连接,只需要知道ip和监听端口,不需要链接没有目的的socket,只是将数据报投递出去,不管接收方是否成功接收到,因此是一种不可靠的传输。
但是UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。
TCP:
是一种面向连接的传输控制协议(transform contorl protocol),必须要和服务器交互,具有高安全性,可靠性,需要和服务器进行三次握手,能根据具体网络拥堵情况进行延时。
Socket:
Socket有两种连接操作方式,面向连接的和面向无连接的。使用UDP就是面向无连接的,使用TCP就是面向连接的。使用UDP无需要指定一个socket目的地,而是用TCP必须要指定一个socket目的地,需要进行预链接,否则连接不到。
socket就像是API,二UDP/TCP就是协议,使用scoket来实现内容的传送。
UDP的通讯,我用的是AsyncUdpSocket文件,文件下载在http://blog.csdn.net/zhuxb523/article/details/51097728这篇文章中有介绍
代码是用于两个手机之间通过UDP进行通信传输
代码如下:
#import "ViewController.h" #import "AsyncUdpSocket.h" @interface ViewController ()<AsyncUdpSocketDelegate> @property (strong ,nonatomic) AsyncUdpSocket* udpServerSocket; @property (strong ,nonatomic) AsyncUdpSocket* udpClientSocket; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //服务端创建 _udpServerSocket = [[AsyncUdpSocket alloc] initWithDelegate:self]; //与你的发送消息到对应手机客户端的端口号保持一致 [_udpServerSocket bindToPort:8089 error:nil]; [_udpServerSocket receiveWithTimeout:60 tag:200]; //客户端创建 _udpClientSocket = [[AsyncUdpSocket alloc] initWithDelegate:self]; UIButton* btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(100, 100, 60, 30); btn.backgroundColor = [UIColor cyanColor]; [btn addTarget:self action:@selector(btnAction) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn]; // Do any additional setup after loading the view, typically from a nib. } //客户端 -(void)btnAction { NSData* data = [@"嗯,你好" dataUsingEncoding:NSUTF8StringEncoding]; NSString* host = @"192.168.2.170";//需要发送消息的对方手机的IP UInt16 port = 9080;//与你的发送消息到对应手机的客户端的端口号保持一致 [_udpClientSocket sendData:data toHost:host port:port withTimeout:60 tag:100]; } //监听客户端是否发送成功 -(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag { if (tag == 100) { NSLog(@"数据成功"); } } //服务端收到数据后的回调 -(BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port { NSString* message = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"----1----%@",message); [_udpServerSocket receiveWithTimeout:60 tag:200]; return YES; } @end
相关文章推荐
- java-模拟tomcat服务器
- Linux socket 初步
- Android IPC进程间通讯机制
- java socket 注意的地方
- java socket 注意的地方
- C#基于UDP实现的P2P语音聊天工具
- C#基于socket模拟http请求的方法
- 简单的Ruby中的Socket编程教程
- Socket不能选择本地IP连接问题如何解决
- C#之Socket操作类实例解析
- 使用C#来编写一个异步的Socket服务器
- C#基于UDP进行异步通信的方法
- C#使用Socket快速判断数据库连接是否正常的方法
- 科学知识:理解socket
- 距离详解Linux下的UDP方式通讯
- Android聊天工具基于socket实现
- php与flash as3 socket通信传送文件实现代码
- 解决time_wait强制关闭socket
- C#中使用UDP通信实例
- C#使用Socket上传并保存图片的方法