看板 AndroidDev 關於我們 聯絡資訊
第一次寫socket相關,感覺好像很多資料,卻又不是看了不是很懂, 所以來發文問一下。 1.socket用什麼做比較好? 因為我資料處理上又是用handler, 還是說這樣就不要用asynctack? 2.我要傳接的不是一般的string 是要傳byte[]的資料,這樣要怎麼樣比較好傳? 如果改用bundle,又不能跟handler那邊同步,而且也不好傳byte[] 3.socket要輸出,是要怎麼寫? 因為網路上教學大多都是string 要改丟byte[]是要怎樣處理。 ---已解--- 4.用asynctack 要把byte[]丟回來的話, 就是要@Override onPostExecute? (這個只要前面傳可以做好,這部分好像就OK了? 下面這是我宣告socket方式: public class MainActivity extends Activity { Handler mHandler; ... public void onCreate(Bundle savedInstanceState) { Client client; client.execute(); } ... mHandler = new Handler(); final Runnable runnable = new Runnable() { public void run() { Combinedata.setData(); } } ... } public class Client extends AsyncTask<Void, Void, Void> { protected Void doInBackground(Void... voids) { try { socket = new Socket(ipAddress, port); socket輸出處? } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.66.156 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1494854314.A.2FE.html
areyo: byte 和string不是可以轉換嗎??? 05/15 21:41
這部分我再找找看
y3k: .getOutputStream()跟.getInputStream() 05/16 01:02
y3k: TCP Socket也只有這兩個可以玩而已 Google一下吧 05/16 01:03
主要問題是如何從handler的 runnable那邊傳給socket ※ 編輯: kazumi66 (60.250.195.171), 05/16/2017 12:22:05
pttworld: 如果寫個類別實作runnable,建構時把handler傳入,應該 05/16 12:47
pttworld: 不困難吧。 05/16 12:47
ssccg: 1 AsyncTask通常用在只用一次+短時間的作業 05/16 14:41
ssccg: 2 Message有個obj public field,愛傳什麼就傳什麼 05/16 14:43
ssccg: 3 Socket本來就是傳byte stream,反而是string才要另外處理 05/16 14:45
ssccg: 4 yes 05/16 14:46
ssccg: 如果你是要需要收送資料時才開socket,用完就關掉那就用你 05/16 14:48
ssccg: 的AsyncTask寫法就好,如果是要保持連線、等不定時的回覆 05/16 14:53
ssccg: 那要用另一個thread 05/16 14:54
ssccg: 另外你的程式Handler、Runnable都是沒必要的,AsyncTask可 05/16 14:55
ssccg: 以傳參數 → AsyncTask<Params, Progress, Result> 05/16 14:56