android安卓socket客户端连接不上pc服务端

本文解决了一个关于Android设备使用Socket与PC进行通信时遇到的连接问题。主要问题出现在主线程中执行Socket操作导致的NetworkOnMainThreadException异常。通过将Socket操作移至子线程,并调整客户端Socket连接代码,成功解决了这一难题。
问题描述:

1、安卓利用Socket和PC通信无法连接
2、已经设置了
3、相同代码PC端和PC端通信没有问题
4、会在new Socket(ip,port)这里一直堵塞;
5、NetworkOnMainThreadException

解决方案:

(摘自[https://segmentfault.com/q/1010000008783075])
NetworkOnMainThreadException, 是在主线程涉及Socket相关操作了吧?
这里先让代码跑起来, 假设你现在的客户端代码写在 startClient()里面, 需要把这个代码放到子线程去执行:

new Thread(new Runnable() {
        @Override
        public void run() {
            startClient();
        }
    }).start();

实际上, 你还要处理这个线程和主线程(UI线程)交互的问题, 这个就和业务代码相关了.
建议先了解一下主线程(UI线程)和子线程的区别/联系, 然后看一下线程通讯的实现.

到这里其实就解决了,如果没有可以试试下面的方案(未证实可不可行)

之前遇到过一次,客户端的socket连接的代码尝试换成下面的。
客户端:

socket = new Socket();
socket.connect(new InetSocketAddress("1.1.9.30",8080), 5000);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值