`
wonderzl
  • 浏览: 78908 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

建立到服务器的连接

阅读更多
      在Mac OS X上,可以使用NSHost和NSStream对象建立到服务器的连接。
  NSStream类有一个方法getStreamsToHost:port:inputStream:outputStream:,它创建一个到服务器的输入和输出流,但问题是iPhone OS不支持getStreamsToHost:port:inputStream:outputStream:方法。为了想使用这个方法,你可以增加一个类别到现有的NSStream类上,替换getStreamsToHost:port:inputStream:outputStream:方法提供的功能。
  在NSStreamAdditions.h文件中,增加下面的代码:
@interface NSStream (MyAdditions)

+ (void)getStreamsToHostNamed:(NSString *)hostName 
						 port:(NSInteger)port 
				  inputStream:(NSInputStream **)inputStreamPtr 
				 outputStream:(NSOutputStream **)outputStreamPtr;

@end


  在NSStreamAdditions文件中加入以下代码:
@implementation NSStream (MyAdditions)


+ (void)getStreamsToHostNamed:(NSString *)hostName 
						 port:(NSInteger)port 
				  inputStream:(NSInputStream **)inputStreamPtr 
				 outputStream:(NSOutputStream **)outputStreamPtr {
	CFReadStreamRef readStream;
	CFWriteStreamRef writeStream;
	assert(hostName != nil);
	assert((port > 0) && (port < 65536));
	assert((inputStreamPtr != NULL) || (outputStreamPtr != NULL));
	
	readStream = NULL;
	writeStream = NULL;
	
	CFStreamCreatePairWithSocketToHost(
									   NULL, 
									   (CFStringRef)hostName,
									   port, 
									   ((inputStreamPtr != nil) ? &readStream : NULL), 
									   ((outputStreamPtr != nil) ? &writeStream : NULL));
	if (inputStreamPtr != NULL) {
		*inputStreamPtr = [NSMakeCollectable(readStream) autorelease];
	}
	
	if (outputStreamPtr != NULL) {
		*outputStreamPtr = [NSMakeCollectable(writeStream) autorelease];
	}
}

@end

  上面的代码为NSStream类增加了一个getStreamsToHostNamed:port:inputStream:outputStream:方法,现在你可以在你的iPhone应用程序中使用这个方法,使用TCP协议连接到服务器。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics