Android 客户端未连接到服务器 KryoNet
Android client not connecting to server KryoNet
我正在尝试从 Android 客户端(从我的 phone)连接到服务器(我的 PC)。服务器和客户端都在使用 KryoNet。当我尝试从与服务器位于同一台 PC 上的客户端连接时,连接成功。当我尝试从我的 Android phone 连接到无线(连接到与运行服务器的 PC 相同的路由器)时,连接也成功了。当我在使用移动数据时尝试从 phone 连接时连接失败(它给出超时错误)。我进行了端口转发并从 Windows 防火墙设置中打开了端口。知道出了什么问题吗?
客户代码:
final Client client = new Client();
client.getKryo().register(StringRequest.class);
final StringRequest request = new StringRequest();
new Thread(client).start();
System.out.println("Client started.");
try {
client.connect(5000, ipAddress, 54555);
client.addListener(new Listener() {
public void received(Connection connection, Object object) {
if (object instanceof StringRequest) {
StringRequest response = (StringRequest) object;
Gdx.app.log("Client",response.data);
}
}
});
} catch (IOException e) {
Gdx.app.log("Exception", e.getMessage());
e.printStackTrace();
}
request.data = "Hello";
client.sendTCP(request);
服务器代码:
Server server = new Server();
Kryo kryo = server.getKryo();
kryo.register(StringRequest.class);
server.start();
try {
server.bind(54555);
} catch (IOException e) {
e.printStackTrace();
}
server.addListener(new Listener() {
public void received (Connection connection, Object object) {
if (object instanceof StringRequest) {
StringRequest request = (StringRequest)object;
System.out.println("Server"+request.data);
StringRequest response = new StringRequest();
response.data = "response";
connection.sendTCP(response);
}
}
});
你的Android应用程序有上网权限吗?
<uses-permission android:name="android.permission.INTERNET" />
需要通过网络进行通信。另外,请确保您尝试连接的是 PC 的外部 IP,而不是本地 IP (192.168.x.xxx
)。您可以获得您的外部 IP here.
我正在尝试从 Android 客户端(从我的 phone)连接到服务器(我的 PC)。服务器和客户端都在使用 KryoNet。当我尝试从与服务器位于同一台 PC 上的客户端连接时,连接成功。当我尝试从我的 Android phone 连接到无线(连接到与运行服务器的 PC 相同的路由器)时,连接也成功了。当我在使用移动数据时尝试从 phone 连接时连接失败(它给出超时错误)。我进行了端口转发并从 Windows 防火墙设置中打开了端口。知道出了什么问题吗?
客户代码:
final Client client = new Client();
client.getKryo().register(StringRequest.class);
final StringRequest request = new StringRequest();
new Thread(client).start();
System.out.println("Client started.");
try {
client.connect(5000, ipAddress, 54555);
client.addListener(new Listener() {
public void received(Connection connection, Object object) {
if (object instanceof StringRequest) {
StringRequest response = (StringRequest) object;
Gdx.app.log("Client",response.data);
}
}
});
} catch (IOException e) {
Gdx.app.log("Exception", e.getMessage());
e.printStackTrace();
}
request.data = "Hello";
client.sendTCP(request);
服务器代码:
Server server = new Server();
Kryo kryo = server.getKryo();
kryo.register(StringRequest.class);
server.start();
try {
server.bind(54555);
} catch (IOException e) {
e.printStackTrace();
}
server.addListener(new Listener() {
public void received (Connection connection, Object object) {
if (object instanceof StringRequest) {
StringRequest request = (StringRequest)object;
System.out.println("Server"+request.data);
StringRequest response = new StringRequest();
response.data = "response";
connection.sendTCP(response);
}
}
});
你的Android应用程序有上网权限吗?
<uses-permission android:name="android.permission.INTERNET" />
需要通过网络进行通信。另外,请确保您尝试连接的是 PC 的外部 IP,而不是本地 IP (192.168.x.xxx
)。您可以获得您的外部 IP here.