作者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/cn.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