【问题标题】:Can't open Java Server Socket on Android无法在 Android 上打开 Java Server Socket
【发布时间】:2018-08-06 10:16:18
【问题描述】:

我正在尝试编写一个简单的 Android 聊天程序。为了测试,我想让服务器和客户端在同一台设备上运行。我目前坚持设置服务器部分的第一步,我根本不知道我做错了什么。 (服务器将延迟运行在自己的线程中)

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    int port = 4444;

    try {
        ServerSocket serverSocket = new ServerSocket(port);
        Log.i("Info", "Server socket initiated on port" + port);

    } catch (IOException e) {
        Log.e("Error", "Could not listen on port " + port);
    }
  }
}

我尝试了很多不同的端口,但仍然收到 IO 错误。我还尝试使用以下代码简单地使用 new ServerSocket(0) 分配一个空闲端口:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ServerSocket serverSocket = null;

    try {
        serverSocket = new ServerSocket(0);
        Log.i("Info", "Server socket initiated on port" + serverSocket.getLocalPort());

    } catch (IOException e) {
        Log.e("Error", "Could not listen on port " + serverSocket.getLocalPort());
    }
  }
}

但这只是返回一个端口号 -1,这意味着 serversocket 仍然没有绑定到任何东西。

【问题讨论】:

  • 您可能需要声明您的应用程序需要网络访问权限。
  • 我在清单中添加了权限 仍然得到-1
  • get the IO Error 哪一个?堆栈跟踪在哪里?
  • 好的,很抱歉,我不知道为什么,但现在添加权限可以解决问题。突然它开始工作了。谢谢 npinit!

标签: java android server serversocket


【解决方案1】:

答案是在清单中添加权限。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    相关资源
    最近更新 更多