TCP客户端套接字不适用于api 19

时间:2015-01-11 13:54:11

标签: java android sockets

当我在HTC Wildfire S(API10,android 2.3.3)中使用我的代码时,这很好用。但是,如果我运行三星Galaxy S4(API19,android 4.4.2),它不起作用(应用程序启动和关闭;没有任何反应)。服务器在我的本地计算机上(Hercules Program)。当然,我在清单中添加了许可(INTERNET)。

代码是:

try{
    Socket s = new Socket("192.168.1.13", 6914);
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    String outMsg = "";
    outMsg = "This is Client";
    out.write(outMsg);
    out.flush();
    out.close();
    s.close();
} catch (IOException e) {
    e.printStackTrace();
}

那么你能帮助我并说明问题所在吗?我没有根我的三星手机。

1 个答案:

答案 0 :(得分:0)

看起来您正在主(UI)线程中运行与网络相关的代码。在Android 1.x和2.x上,不推荐使用它,因为它可能导致UI冻结。自从Android 3.x(它在Android 4.x和5.0中仍然有效)以来,该平台现在严格禁止它。如果您有机会阅读日志,您将获得NoNetworkInMainThreadException

要实现此类测试,我建议您使用Thread

new Thread() {
    public void run() {
        // Your network code, it will run on another thread
    }
}.start();

如果您需要将结果返回主线程(某些时候可能需要),您需要查看更复杂的模式,如AsyncTask