天天看點

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

網絡越來越好,手機之間的互動已經是常态,王者榮耀、微信實時視訊等,已經将多屏互動推到各到各種應用場景。

為了讓大家能清楚地了解多屏互動,我将結合執行個體對移動裝置實時通信進行研究,并系統性地呈現一些解決方案。

最開始,我嘗試給大家展示如何建立一個最簡單的點對點通信。

萬事開頭難,先假定一下需求:

區域網路内通信。

寫一個你看我畫的程式。

純用戶端(一開始,我不打算讓伺服器參與)。

下面對需求進行進一步的分析。

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

從原型上看,我們的流程應該是下圖的形式。

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

下面我們進行架構設計與開發選型了。

基于前文的需求假定進行簡單設計網絡模型,我将目标的網絡分拆成3層:

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

對應的開發架構應該是這樣的

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

基于實時通信的高效性,我将底層庫的開發語言選擇了C++,協定格式選擇為二進制,網絡層協定選擇UDP(後面會有切換TCP的選擇)。

通信協定端口我選擇12000.

字段

注解

底層庫開發語言

C++

協定格式

二進制

網絡層協定

UDP

通信端口

12000

下面我将開始搭建底層庫(寫到這裡還是一行代碼都沒寫,不過現在是國慶節,既然有時間那就開始搞吧)。

工程目錄如下

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

我設計的busi頭檔案,給上層調用的。(詳細的見 github)

花了半天的時間寫完了底層庫,先來測試一下底層庫的連通性,我寫了一個程試程式,隻列下核心檔案, 詳細請看github上。

因為我有一台mac, 一個ubuntu,所有測試時候,2邊都要編譯,mac是用xcode比較簡單,ubuntu上編寫makefile

framework:

test

生成的程式如下:

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

現在我們來實測一下連通性:

我讓mac做主動連接配接的一方,讓linux做被動連接配接。

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範
簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

然後試着各自問候一下吧

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範
簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

可以看到2者已經通了,咱們的底層庫搭建OK!

感興趣并助喜歡動手同學,可以 下載下傳代碼 實測一下。

為了友善調試,我選擇開發一個mac版的你看我畫。

在xcode上建立一個spritekit工程

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範
簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

在storyboard上加入按鈕元素并綁定ViewController中的變量。

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範
簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

framework為底層庫,util為工具目錄,adaptor為适配層。

建立一個自定義的view用來實作繪畫。

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

在實作上我用最簡單的繪圖API, 不過為了區分對手與我畫的,我用了2種顔色。

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

設定自定義滑鼠響應事件

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

并在代碼裡建立1個scene用于加載自定義view.

object c 調用原生C++,我的做法是加一層代理。

我将代碼結構設計如下

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

含義

CoreData

應用層協定結構

CoreAdaptor

object c 适配

CoreDelegate

代碼接口

Core

c++适配

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

在開發的時候,我希望上層在發送消息時,不需要指定IP與端口,而隻需要索引就行,是以在framework層

建立一個 位址與索引的對應關系。

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

是以适配層調用接口隻需要指定index就行了

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

結合之前設計的流程圖,這個遊戲過程的生命周期用viewcontroller 中的代碼表示如下:

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

是以最終連接配接建立要麼在confirm後,要麼在onConfirm後。

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範
簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

start函數其實隻是負責切換到畫圖場景

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

OK,整體代碼寫完後,我們來示範一下效果。

先看下截圖

簡單設計并開發一個移動通信程式需求分析架構設計底層庫搭建寫一個你看我畫的程式吧程式示範

明天我上傳下視訊,我畫的有點醜,不過沒關系,大家可以上github上拉下來自己畫。

<a href="https://github.com/70207/draw.git">https://github.com/70207/draw.git</a>

繼續閱讀