Android 没有通过 serverSocket.accept();

标签 android sockets

我目前正在尝试在 android 中打开一个套接字,但我的代码一直停留在一句话上。

  private ServerSocket serverSocket;
  private Socket clientSocket;
  private PrintWriter out;
  private BufferedReader in;

  public void run(){
    Log.i("DebugMessage", "ServerThread received pulse. Trying to open socket now!");
    try{
      serverSocket = new ServerSocket(25555);
      Log.i("DebugMessage", "serverSocket is open, waiting for the clientSocket.");
      clientSocket = serverSocket.accept();
      Log.i("DebugMessage", "serverSocket and clientSocket are both open! Waiting for in-/output!");

      in = new BufferedReader(
             new InputStreamReader(clientSocket.getInputStream()));
      out = new PrintWriter(clientSocket.getOutputStream(), true);

      String input = in.readLine();
      out.println("received: " + input);

      in.close();
      out.close();

    } catch(Exception e) {
        Log.i("DebugMessage", "Failed to open socket!");
    e.printStackTrace();
    }
  }

clientSocket = serverSocket.accept(); 它一直坚持。 现在我已经看到这个问题几次了,但给出的答案完全不同。 Here据说这是关于他的代码,并且here有人说问题出在模拟器上。现在我的问题是,是我的模拟器问题还是我的代码问题,如果是我的代码问题,如何解决?

顺便说一下,我已经将这些行添加到 AndroidManifest.xml 中:

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

最佳答案

FD_ 的回答是正确的,但我想澄清一下。 accept() 调用 wait()。所以线程将等待连接。 您可能希望从其他线程调用此类代码。

关于Android 没有通过 serverSocket.accept();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21487675/

相关文章:

java - Android:应用程序关闭后 onTaskCompleted 崩溃

javascript - 在 NodeJS 上跨页面请求维护后端连接?

python - 如何使用 python 发出正确的 TCP 请求

Android:如果用户离开当前 Activity ,如何暂停下一个 Activity 的启动?

android - 在方向更改时在 PagerAdapter 中保存 EditText 的状态

java - android eclipse按钮的点击事件

c - unix 套接字 - 无法连接到服务器(连接超时)

sockets - 无法捕获 SocketException

C |套接字不接受通过 telnet 的连接

Android 2.2 - 如何设置微调器的 alpha 属性?