本文將演示1個iOS客戶端程序,通過UDP協議與兩個典型的NIO框架服務端,實現跨平臺雙向通訊的完全Demo。服務端將分別用MINA2和Netty4進行實現,而通訊時服務端你只需選其1就好了。同時用MINA2和Netty4分別實現服務真個目的,是由于很多人都在糾結究竟是用MINA還是Netty來實現高并發的Java網絡通訊服務端,在此干脆兩個都實現了,就看你怎樣選擇了,夠吊吧。
NIO框架的流行,使得開發大并發、高性能的互聯網服務端成為可能。這其中最流行的不過就是MINA和Netty了,MINA目前的主要版本是MINA2、而Netty的主要版本是Netty3和Netty4(Netty5已被取消開發了:詳見此文),本次將使用MINA2和Netty4來實現服務真個代碼。
實際上,MINA2和Netty4的官方代碼里已有UDP通訊的Demo代碼,但客戶端其實不是基于當今流行的移動端(主要是Android和iOS端)來實現,本文將演示用iOS客戶端來實現這類跨平臺的雙向網絡通訊。演示Demo中,已解決跨平臺通訊時的亂碼、數據字節異常等問題,請繼續往下瀏覽。
有關MINA和Netty的入門文章很多,但多數都是復制、粘貼的未經證實的來路不明內容,對初次接觸的人來講,1個可以運行且編碼規范的Demo,明顯要比各種“詳解”、“深入分析”之類的要來的直接和成心義。本系列入門文章正是基于此種斟酌而寫,雖無精深內容,但最少希望對初次接觸MINA、Netty的人有所啟發,起到拋磚引玉的作用。
本文是《NIO框架入門》系列文章中的第3篇,目錄以下:
本文要演示的Demo包括兩部份,iOS UDP客戶端和NIO框架實現的服務端(包括MINA2和Netty4實現兩個方案),客戶端每隔5秒向服務端發送消息,而服務端在收到消息后馬上回復1條消息給客戶端。
如上所述,服務端和客戶端都要實現消息的發送和接收,即實現跨平臺的雙向通訊。如果有心的話,略加改造,也就很容易實現1個簡陋的聊天程序了。下節將將給出真實的實現代碼。
CocoaAsyncSocket源碼地址:https://github.com/52im/CocoaAsyncSocket,以下圖:
補充說明:iOS里的網絡編程有多種途徑實現(具體請參看此文),本文選擇的是iOS里非常熱門的 CocoaAsyncSocket 工程,它對iOS原生網絡API做了進1步封裝,使得開發者更容易使用。
建好工程后把CocoaAsyncSocket的源碼援用進來就好了,以下圖:
補充說明:如何新建1個XCode工程請自行百度之,依照系統默許的簡單建立1個就行了,本例不需要作額外配置和額外的系統庫援用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//
Copyright (C) 2016 即時通訊網(52im.net)- 即時通訊開發者社區. //
All rights reserved. //
Created by JackJiang on 16/06/22. # import "ViewController.h" # import "LocalUDPSocketProvider.h" # import "LocalUDPDataSender.h" # import "CharsetHelper.h" # import "UDPUtils.h" @interface ViewController
() @end @implementation ViewController -
( void )viewDidLoad { [ super viewDidLoad]; //
初始化socket [[LocalUDPSocketProvider
sharedInstance] initialLocalUDPSocket]; |
上一篇 監聽手機截屏事件
下一篇 每天郵寄回系統情況的SAR腳本