【问题标题】:Android Socket client doesn't connect to the serverAndroid Socket 客户端无法连接到服务器
【发布时间】:2018-10-14 05:48:05
【问题描述】:

我正在尝试将 android 客户端连接到 pc 服务器,但客户端总是崩溃并且无法连接到服务器。 服务器由两种方法组成,一种等待客户端连接,另一种打印客户端连接(我没有使用线程,我只连接一个客户端) 服务器(我只展示第一种方法):

public Socket listeningClient () 
{
    try 
    {
        server = new ServerSocket(8080);
        client = server.accept();
        server.close();
    }
    catch (Exception e)
    {
        System.out.println(e.getMessage());
        System.exit(1);
    }
    return client;
}

在客户端有一个按钮调用方法来创建点击时的套接字:

客户

public class Client {
  String IP = "192.168.1.4";
  int portaServer = 8080;
  Socket miosocket = null;

  public void connetti() {
    try {
        InetAddress nomeServer = InetAddress.getByName(IP);
        miosocket = new Socket(nomeServer, portaServer);
        miosocket.close();
    }
    catch (UnknownHostException e) {
        e.printStackTrace();
        Log.e("MyApp", "UnknownHost");
    }
    catch (Exception e) {
        e.printStackTrace();
        Log.e("MyApp", "Exception");
        System.exit(1);
    }
  }
}

该应用程序总是在该行崩溃:miosocket = new Socket(nomeServer, portaServer); 并抛出异常(第二个)。谁能告诉我是我的代码有问题(我很确定问题是代码)还是服务器有问题?

(在 AndroidManifest.xml 中我使用了这些权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

)

【问题讨论】:

  • 有什么例外?
  • 我认为是:05-03 22:29:56.594 24077-24077/com.example.administrator.progetto W/System.err: android.os.NetworkOnMainThreadException ;在此之后它给了我另一个 system.err 但它写了大约 20 行...

标签: java android sockets client-server


【解决方案1】:

根据您在 cmets 中引用的异常,您不能在主线程上执行阻塞 IO。您需要生成一个线程(或使用AsyncTask 并在那里完成工作。

如果您真的想在 Android 服务上托管服务器,您应该通过创建 Service 并使用它来托管启动服务器和处理请求的线程来实现。

【讨论】:

    猜你喜欢
    • 2017-02-13
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 2013-12-05
    • 2014-05-21
    • 2020-06-17
    • 2014-11-04
    相关资源
    最近更新 更多