IOS实例 实现基于Socket TCP/IP通信是本文要介绍的内容,以前写过基于http的网络传输层的通信,如今项目须要实现tcp/ip的通信协议,经过网络查找了一下,已经有人写好了公开的类库AsyncSocket,下面介绍一下AsyncSocket的使用方法。能够参考AsyncSocket的官方文档。ios
使用方法以下:服务器
一、建立工程。网络
二、把AsyncSocket添加到项目中。iphone
三、添加CFNetwork.framework到工程中。socket
四、实现测试类:async
#import <UIKit/UIKit.h> #import "AsyncSocket.h" @interface iphone_socketViewController : UIViewController { AsyncSocket *asyncSocket; } @end
相应的方法实现:tcp
#import "iphone_socketViewController.h" @implementation iphone_socketViewController - (void)viewDidLoad { [super viewDidLoad]; asyncSocket = [[AsyncSocket alloc] initWithDelegate:self]; NSError *err = nil; if(![asyncSocket connectToHost:@"192.168.0.113" onPort:25001 error:&err]) { NSLog(@"Error: %@", err); } } - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port { NSLog(@"onSocket:%p didConnectToHost:%@ port:%hu", sock, host, port); [sock readDataWithTimeout:1 tag:0]; } -(void) onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag { NSString* aStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"===%@",aStr); [aStr release]; NSData* aData= [@"<xml>我喜欢你<xml>" dataUsingEncoding: NSUTF8StringEncoding]; [sock writeData:aData withTimeout:-1 tag:1]; [sock readDataWithTimeout:1 tag:0]; } - (void)onSocket:(AsyncSocket *)sock didSecure:(BOOL)flag { NSLog(@"onSocket:%p didSecure:YES", sock); } - (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err { NSLog(@"onSocket:%p willDisconnectWithError:%@", sock, err); } - (void)onSocketDidDisconnect:(AsyncSocket *)sock { //断开链接了 NSLog(@"onSocketDidDisconnect:%p", sock); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } - (void)viewDidUnload { asyncSocket=nil; } - (void)dealloc { [asyncSocket release]; [super dealloc]; } @end
这里只实现了简单的客户端,关于服务器的实现,是采用pathy写的。在源代码中有。svn
编译运行结果:测试
服务器端:google
bogon:iosworkspace vsp$ ./Servers.py
客户端的IP是: (’192.168.0.169′, 54851)
<xml>我喜欢你<xml>
后来发的数据
客户端:
2010-12-27 19:14:47.723 iphone.socket[3186:307] WB:Notice: WinterBoard 2010-12-27 19:14:48.892 iphone.socket[3186:307] onSocket:0x16bd00 didConnectToHost:192.168.0.113 port:25001 2010-12-27 19:14:48.897 iphone.socket[3186:307] ===我是服务器端的数据 2010-12-27 19:14:48.911 iphone.socket[3186:307] ===我不喜欢你 2010-12-27 19:14:48.918 iphone.socket[3186:307] onSocket:0x16bd00 willDisconnectWithError:(null) 2010-12-27 19:14:48.928 iphone.socket[3186:307] onSocketDidDisconnect:0x16bd00
源代码:http://easymorse-iphone.googlecode.com/svn/trunk/iphone.socket/
小结:IOS实例 实现基于Socket TCP/IP通信的内容介绍完了,但愿本文对你有所帮助。