java建立socket连接,如何建立socket连接

今天测试了一下最佳评论里面的代码,发现居然报错了!!!

Uncaught android.os.NetworkOnMainThreadException;at new java.net.Socket

不能在主线程调用网络,只能采用异步方式。而且,这个问题出现在Andriod 4.0以上:

Android在4.0之前的版本 支持在主线程中访问网络,4.0以后不支持。

解决方法:

1.通过新的线程访问网络

然后,新的线程访问是不可能了,目前NJS的一块短板,真头疼。

然后看了些文章,说可以用StrictMode来改良异步阻塞问题,于是果断对上面Chuck大神的代码改良了一下。

var Socket = plus.android.importClass("java.net.Socket");

var PrintWriter = plus.android.importClass("java.io.PrintWriter");

var BufferedWriter = plus.android.importClass("java.io.BufferedWriter");

var OutputStreamWriter = plus.android.importClass("java.io.OutputStreamWriter");

var BufferedReader = plus.android.importClass("java.io.BufferedReader");

var InputStreamReader = plus.android.importClass("java.io.InputStreamReader");

//测试改良

var StrictMode = plus.android.importClass("android.os.StrictMode");

var Build = plus.android.importClass("android.os.Build");

if (Build.VERSION.SDK_INT > 9) {

var policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

StrictMode.setThreadPolicy(policy);

}

var socket = new Socket("192.168.1.100",9100);

于是,可以了……这里加个Andriod版本判断,可以兼容4.0以上和4.0以上。

谢天谢地解决问题,我终于可以用Andriod手机去调用热敏打印机愉快地打印小票了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值