<br><p>最近在做一个项目,项目其中一个需求是打开app自动连接tcp服务端,连接失败后自动尝试8次。尝试成功继续,不成功提示服务器未响应。</p> <p>我想到了用多线程实现,其中一个用于显示尝试状态,另一个线程循环尝试socket=new Socket(),达到以下效果: </p> <p>代码如下:</p> <p>连接tcp用tcp_conn();</p> <p>第一次连接失败后调用ReConnect()</p> <p>另一个线程用于打印尝试状态,使用handler定时器,每隔1s检查连接状态,显示到屏幕Text【【微信】】中</p> <p>将所以步骤封装到SystemInit()</p> <p>然后在onCreate中调用:</p> <p>其他布局代码就不贴出来了。 这只是实现了这一步功能,8次之后如果还没连上难道就不行了吗?还要重新打开app才能连?当然可以增加一个刷新按钮,在按钮点击事件中再次调用SystemInit(); 所以未连接时要尝试8次,连接成功后跳出ReConnect和关闭定时器。8次后仍未连接放弃尝试,关闭定时器。</p> <p>验证中,我先在网络调试助手中关闭tcp服务端,打开app,app打印出连接失败,尝试重新连接 2/8,此时我打开tcp服务端,等一会后显示连接成功。如果尝试8次之后还没成功,则显示出“服务器未响应,请确定服务器已打开”。 将所有内容封装成类,做了一些改动,UserTcp.java</p> <p>使用时只需调用TcpInit();tv_tip是【【微信】】控件,需自己定义</p> <hr><h1 style="font-size: 38px;color: #4d4f53;">adb连接手机时,端口被360手机助手占用,无法连接的问题</h1><br> <p>adb连接手机时,端口被占用,无法连接,如下图所示:</p> <p>1、查看端口号被什么占用了,一般是360手机助手(以下端口号是我自己设置的系统变量,默认的是5307):</p> <p>2、从上图可以看出,被占用的进程是12640,打开任务管理器-详细服务,找到pid对应的进程(此处不截图)</p> <p>被【360手机助手】占用的话,打开360安全卫士,打开手机助手,右上角【设置】,其它设置,将【启动助手时自动无线连接上次连接的手机】选项去掉,<span style="color:#f33b45;">不勾选</span>。</p> <p>?</p> <p>如果以上方法还不行,尝试第二种方法:</p> <p>https://blog.csdn.net/u010324075/【【微信】】tails/103274895</p>
本文地址:
/show-91655.html
版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。


