无法在 Android 上打开 Java 服务器套接字
Can't open Java Server Socket on Android
我正在尝试编写一个简单的 Android 聊天程序。为了进行测试,我想让服务器和客户端 运行ning 在同一台设备上。我目前坚持设置服务器部分的第一步,我根本不知道我做错了什么。 (服务器将在自己的线程中迟到 运行)
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,这意味着服务器套接字仍然没有绑定任何东西。
答案是在清单中添加权限。谢谢!
我正在尝试编写一个简单的 Android 聊天程序。为了进行测试,我想让服务器和客户端 运行ning 在同一台设备上。我目前坚持设置服务器部分的第一步,我根本不知道我做错了什么。 (服务器将在自己的线程中迟到 运行)
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,这意味着服务器套接字仍然没有绑定任何东西。
答案是在清单中添加权限。谢谢!