作者applejuice64 (凝時)
看板AndroidDev
標題[問題] android socket無法得到回傳
時間Wed Jul 22 01:08:41 2020
我嘗試寫一個android程式
和一支python server
手機跟pc都是同一個LAN
手機接WiFi 192.168.0.2
PC接 192.168.0.4
手機在edittext打字串按下按鈕
Server得到字串並回應
實際運作時android打的訊息可以被PC接收到
但是回傳給手機收不到
不知道是什麼問題(ip設錯?權限沒開好?)
求佛心大大們的建議
https://i.imgur.com/mv58BId.jpg
https://i.imgur.com/Ns5kl54.jpg
https://pastebin.com/884BgRpv
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.72.167 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/AndroidDev/M.1595351323.A.4A8.html
※ 編輯: applejuice64 (42.72.72.167 臺灣), 07/22/2020 01:12:35
※ 編輯: applejuice64 (42.72.72.167 臺灣), 07/22/2020 01:29:38
1F:→ ahyang98: s = new Socket(192.x.x.2) 不會變成在聽手機自己嗎?07/22 10:18
2F:推 panjiongkai: 你要收回訊應該是在送之前先建立InputStream,然後發07/22 16:18
3F:→ panjiongkai: 送訊號給電腦後,讀InputStream的內容07/22 16:18
4F:→ panjiongkai: 不是建立一個對手機自己的socketClient07/22 16:19
感謝樓上兩位的建議
我今天又嘗試了兩個方案
方案1:
https://pastebin.com/8hzXkEW6
https://i.imgur.com/xPWXsj1.jpg
嘗試click啟動send data
然後準備一個thread啟動serversocket
pc端在收到message後
connect到serversocket並回傳
方案1結果:
手機發出訊息讓py確實收到後
py決定連線到手機serversocket
py connect到手機的時候卻直接讓手機閃退...
不知道是我的手機server邏輯寫法不正確無法接收訊息的關係嗎?
還是py檔案的發送邏輯不正確?
不應該connect(ip,port)再sendall再close?
方案2
https://pastebin.com/A5jw1BCh
https://i.imgur.com/IpqKjZC.jpg
開啟手機app與server後
手機輸入訊息send可以讓server獲得訊息並回傳了
手機也會根據pc端回傳值改變手機畫面中text內容
但是沒辦法執行第二次send
必須重新開啟一次手機才可以send第二次訊息
不知道原因為何?我的send_data啟動後不能再進行第二次send_data嗎?
這部分沒頭緒...
想問各位大大覺得我的code邏輯合理或哪邊有異常?
1.手機輸入哈哈
2.電腦得到client message:哈哈
並回傳\n哈哈okay.
3.最後手機的text變成
wait to be changed300
哈哈okay.300
我的append執行了兩次...
我想我的程式邏輯應該是有哪邊出錯了....
※ 編輯: applejuice64 (42.72.72.167 臺灣), 07/23/2020 00:04:04
※ 編輯: applejuice64 (42.72.72.167 臺灣), 07/23/2020 00:13:15
5F:→ ahyang98: 你的電腦每次回完訊息就會把socket關掉,可是手機只建立07/23 10:20
6F:→ ahyang98: socket一次07/23 10:20
7F:推 panjiongkai: 方案一的問題應該是因為你在Thread裡面建立Handler的07/23 11:09
8F:→ panjiongkai: 關係07/23 11:09
9F:→ rogerlarger: append兩次的問題我猜是讀了一個空的ttmp,也許可以07/28 00:14
10F:→ rogerlarger: 改成if(ttmp.isEmpty())07/28 00:14
感謝各位的建議
※ 編輯: applejuice64 (114.137.195.195 臺灣), 08/03/2020 15:06:03