APP與終端裝置通訊經驗三(具體情形介紹)

2021-08-27 16:28:19 字數 2125 閱讀 6988

一、過程還原:

1.1.p2p模型

p2p(peer to peer)點對點通訊模型,終端與手機是對等網路,由於終端ip和埠固定,最初由手機建立信令報文傳輸鏈路(常鏈路),之後碼流報文傳輸鏈路(短鏈路)由終端根據手機端的相關的信令報文建立。

1.2.手機連線終端wifi

終端釋放乙個固定名稱熱點(如,wisdom_wifi),ip為固定192.168.10.16,服務埠固定為9999

手機端開啟wifi,手動連線(wisdom_wifi)

手機wifi連線成功,終端為其分配ip位址192.168.10.xx

1.3.信令鏈路建立

手機端主動 connect 192.168.10.16:9999,建立信令傳輸鏈路tcp0,用於手機和終端之間信令的接收和傳送

手機端週期性(如,10秒)傳送裝置狀態查詢指令到終端,終端應答之(相當於長連線,維持通訊鏈路)

二、第一步建立 乙個連線socket,連線終端裝置的ip和埠號

//例項化乙個socket物件

socket = new socket();

//與對應的ip、埠進行連線,先要把橋建好

socket.connect(new inetsocketaddress(ip, port), 3000);

log.i("socketthread","@@@connected");

if (socket.isconnected()) else

} catch (ioexception e)

定義的介面用於監聽socket連線成功與否

public inte***ce connectedstate
當連線成功後,會開啟輸入輸出流的執行緒

public class client 

public void start()

// 得到讀訊息執行緒

public clientinputthreadtm getin()

// 得到寫訊息執行緒

public clientoutputthread getout()

}

裡面的構造方法裡註冊資料監聽的方法

在這裡啟動了輸入輸出執行緒

public clientinputthreadtm(socket socket)  catch (ioexception e) 

}

拿到socket的輸入流ois,同時包裝下datainputstream

同時執行緒的run方法,

int result = dis.read(b);

msg=「9102」;

messagelistener.message(msg);

msg = 「」;

寫出for迴圈表明一直監聽終端資料

當退出for迴圈監聽也隨之結束。

public clientoutputthread(socket socket)  catch (ioexception e) 

} // 這裡處理跟伺服器是一樣的

public void sendmsg(byte msg)

} @override

public void run() }}

dos.close();// 迴圈結束後,關閉輸出流和socket

if (socket != null)

socket.close();

} catch (interruptedexception e) catch (ioexception e) catch (errnoexception e)catch (exception e)

}

這裡使用了thread 的notify和wait的方式,所錯了是object的。居然是所有類的方法,查閱資料

發現:1、wait()、notify/notifyall() 方法是object的本地final方法,無法被重寫;

2、notify方法用於喚醒執行緒。我們看到輸出執行緒的傳送方法就只呼叫了notifyall方法。應該是喚醒這個執行緒。

3、notify方法只是喚醒執行緒。還沒有釋放鎖。當遇到wait方法才會釋放鎖。

總結:本片介紹了手機和終端通過socket流建立通訊的過程。

linux 終端裝置

終端解釋 終端是一種字元型裝置,它有多種型別,通常使用tty來簡稱各種型別的終端裝置。tty是teletype的縮寫。teletype是最早出現的一種終端裝置,很象電傳打字機 或者說就是 是由teletype公司生產的。在linux系統的裝置特殊檔案目錄 dev 下,終端特殊裝置檔案一般有以下幾種 ...

linux 終端裝置

早期計算機通常用電傳印表機充當終端裝置,終端裝置的作用就是接受使用者的輸入並傳遞給計算機,接受計算機的反饋返回給使用者。如下圖所示 後來電傳印表機被鍵盤和顯示器取代,linux為了支援這種外部終端裝置的連線,提供了終端裝置介面 tty 下面以海思hi3559開發板為例說明串列埠終端。在除錯開發板的時...

Linux 終端裝置驅動

1 控制台 1 控制台是乙個虛擬的終端,它必須對映到真正的終端上 2 控制台是個只輸出的裝置,功能很簡單,只能在核心中訪問 2 偽終端 一種特殊的終端裝置,由主 從兩個成對的裝置構成,當開啟主裝置時,對應的從裝置隨之開啟,形成連線狀態 輸入到主裝置的資料成為從裝置的輸出,輸入到從裝置的資料成為主裝置...