iPhone應(yīng)用中Wifi使用Socket連接Internet教程
iPhone Wifi使用Socket連接Internet是本文要介紹的內(nèi)容,主要內(nèi)容是可以實(shí)現(xiàn)與服務(wù)器進(jìn)行收發(fā)消息的過程。不多說,我們來看詳細(xì)內(nèi)容。
1、使用AsyncSocket(http://code.google.com/p/cocoaasyncsocket/)來做為Socket的一個基礎(chǔ)庫.
2、在該庫里面提供了一個EchoServer,我們可以利用這個程序直接在MAC系統(tǒng)上面運(yùn)行一個測試服務(wù)器起來.
3、根據(jù)AsyncSocket(http://code.google.com/p/cocoaasyncsocket/wiki/iPhone)的WIKI將AsyncSocket加入到iPhone的工程里面,記得將TARGET_OS_IPHONE這個宏在工程上面給定義一下.
4、編譯工程通過.
5、連接服務(wù)器代碼:
- // 建立一個Socket實(shí)體并連接到本地服務(wù)器的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);
- }
- // 添加事件響應(yīng)函數(shù)
- 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;
- // 在函數(shù)A中請求讀取數(shù)據(jù), AsyncSocket內(nèi)部會在有接收到數(shù)據(jù)的時候調(diào)用函數(shù)E
- [_client readDataWithTimeout:-1 tag:0];
- // 函數(shù)E被調(diào)用過之后這個讀取請求就結(jié)束了,我們不想讓它結(jié)束掉, 所以在函數(shù)E結(jié)尾處加入, 這樣讀取過程就可以一直持繼下去了
- [_client readDataWithTimeout:-1 tag:0];
- // 在函數(shù)A里面將傳入的sock給記錄下來,這就是我們連接的服務(wù)器的socket接口了
- _server = sock;
- // 發(fā)送數(shù)據(jù)到服務(wù)器
- NSData* data;
- [_server writeData:data withTimeout:-1 tag:1];
6、這樣子我們基本就可以實(shí)現(xiàn)與服務(wù)器進(jìn)行收發(fā)消息的過程了(注意:這些回調(diào)函數(shù)都是在主線程進(jìn)行的,并未在其它的線程中)
7、其它的響應(yīng)事件未去做過多關(guān)注, 請自行解決了.
小結(jié):詳解iPhone Wifi使用Socket連接Internet的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!