2018年2月12日 星期一

【Android】實際使用Socket傳輸資料

這是在「同一台裝置內的兩個不同APP/線程」要互傳資料時使用Socket的心得。

大致原則跟一般Java的Socket使用並無差異。


1.連線的兩頭都可以使用InetAddress這個物件內的static功能「getLocalHost」來取得IP,不然很有可能會失敗。

2.建議要有一頭使用ServerSocket來當聆聽連線請求端。

3.Socket建立後第一件事是「在迴圈內容重複檢查Connect是否已經建立起來」,因為InputStream/OutputStream本身不會檢查,資料丟進Stream中,即使另一端沒有東西接收也會執行。──建立一個while迴圈,重複檢查Socket的「isConnected」是否傳出false,如果是false就重複執行迴圈,直到是true為止。

4.連線完成務必關閉Stream和Socket。(ServerSocket本身不用關閉,要關閉從ServerSocket執行「accept」後取得的Socket。)

其餘細節跟標準Java Socket和Java Stream的使用沒有差別。