使用UDP,因为TCP是面向连接的可靠数据传输服务,使用TCP协议时,在应用层数据报文开始流动之前,其客户机程序和服务器程序之间互相交换运输层控制信息,完成握手阶段。
TCP 的三次握手,以及拥塞控制机制和分组都有开销。UDP没有拥塞控制机制,所以发送端可以以任何速率向其下面的层(网络层)注入数据。
扩展资料:
TCP应用层包括:
1、超文本传输协议(>
2、文件传输(TFTP简单文件传输协议);
3、远程登录(Telnet),提供远程访问其它主机功能, 它允许用户登录internet主机,并在这台主机上执行命令;
4、网络管理(SNMP简单网络管理协议),该协议提供了监控网络设备的方法, 以及配置管理,统计信息收集,性能管理及安全管理等;
5、域名系统(DNS),该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址。
UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。
使用socket进行网络编程的最简单方式是使用NSStream。NSStream类对流 *** 作进行了抽象,包括对各种流数据的读和写:内存流、网络流或文件流。当然,通过NSStream也可以与服务器进行通信。 无论是通过NSStream向服务器写数据,还是从NStream对象中读取服务器数据,都是一件简单的事情。在Mac OS X中,使用NSHost和NSStream与服务器进行连接的代码如下:
NSInputStream iStream;
NSOutputStream oStream;
uint portNo = 500;
NSURL website = [NSURLURLWithString:urlStr];
NSHost host = [NSHost hostWithName:[websitehost]]; [NSStream getStreamsToHost:host
port:portNo
inputStream:&iStream
outputStream:&oStream];
NSStream的getStreamsToHost:port:inputStream:outputStream:方法用于连接服务器并创建一对输入输出流用于向服务器读写数据。问题是iOS中并没有这个方法。因此上述代码无法用于iPhoneapp中。
要解决这个问题,需要为NSStream增加新的类别以增加getStreamToHost:Port:inputstream:outputStream:方法。在Xcode中新建文件NSStreamAdditionsm。然后在NSStreamAdditionsh中编写代码如下:
@interface NSStream (MyAdditions)
+ (void)getStreamsToHostNamed:(NSString)hostName
port:(NSInteger)port
inputStream:(NSInputStream )inputStreamPtr
outputStream:(NSOutputStream )outputStreamPtr;
@end
在NSStreamAdditionsm文件中加入下列代码。
#import "NSStreamAdditionsh"
@implementation NSStream (MyAdditions)
+ (void)getStreamsToHostNamed:(NSString)hostName
port:(NSInteger)port
inputStream:(NSInputStream )inputStreamPtr
outputStream:(NSOutputStream )outputStreamPtr
{
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)