作者kazumi66 (Bryce(。・∀・。)☆彡)
看板AndroidDev
標題[問題] socket傳byte[]相關問題
時間Mon May 15 21:18:29 2017
第一次寫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