iPhone應用中Wifi使用Socket連接Internet教程
iPhone Wifi使用Socket連接Internet是本文要介紹的內容,主要內容是可以實現與服務器進行收發消息的過程。不多說,我們來看詳細內容。
1、使用AsyncSocket(http://code.google.com/p/cocoaasyncsocket/)來做為Socket的一個基礎庫.
2、在該庫里面提供了一個EchoServer,我們可以利用這個程序直接在MAC系統上面運行一個測試服務器起來.
3、根據AsyncSocket(http://code.google.com/p/cocoaasyncsocket/wiki/iPhone)的WIKI將AsyncSocket加入到iPhone的工程里面,記得將TARGET_OS_IPHONE這個宏在工程上面給定義一下.
4、編譯工程通過.
5、連接服務器代碼:
- // 建立一個Socket實體并連接到本地服務器的7777端口
- _client = [[AsyncSocket alloc] initWithDelegate:self];
- NSError *err = nil;
- if (![_client connectToHost:@"127.0.0.1" onPort:7777 withTimeout:1.0f error:&err]) {
- NSLog(@"client net:%@", err);
- }
- // 添加事件響應函數
- A:- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port;
- B:- (void)onSocketDidSecure:(AsyncSocket *)sock;
- C:- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err;
- D:- (void)onSocketDidDisconnect:(AsyncSocket *)sock;
- E:- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag;
- // 在函數A中請求讀取數據, AsyncSocket內部會在有接收到數據的時候調用函數E
- [_client readDataWithTimeout:-1 tag:0];
- // 函數E被調用過之后這個讀取請求就結束了,我們不想讓它結束掉, 所以在函數E結尾處加入, 這樣讀取過程就可以一直持繼下去了
- [_client readDataWithTimeout:-1 tag:0];
- // 在函數A里面將傳入的sock給記錄下來,這就是我們連接的服務器的socket接口了
- _server = sock;
- // 發送數據到服務器
- NSData* data;
- [_server writeData:data withTimeout:-1 tag:1];
6、這樣子我們基本就可以實現與服務器進行收發消息的過程了(注意:這些回調函數都是在主線程進行的,并未在其它的線程中)
7、其它的響應事件未去做過多關注, 請自行解決了.
小結:詳解iPhone Wifi使用Socket連接Internet的內容介紹完了,希望通過本文的學習能對你有所幫助!