IOS實例 實現基於Socket TCP/IP通信

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通信的內容介紹完了,但願本文對你有所幫助。

相關文章
相關標籤/搜索