Android客户端无法连接到libgdx游戏中的服务器

Android客户端无法连接到libgdx游戏中的服务器,android,Android,我需要连接到我在Mac上设置的服务器,但Android套接字总是无法连接。如果我在我的Mac上运行libgdx游戏,并使用“localhost”作为所需的服务器进行连接,它就可以正常工作。我已将相关权限包括在清单文件中。我正在使用通过谷歌搜索我的ip找到的公共ip地址。我也确保了端口的一致性 public class ClientServer implements AsyncTask<String> { private int port; private String server

我需要连接到我在Mac上设置的服务器,但Android套接字总是无法连接。如果我在我的Mac上运行libgdx游戏,并使用“localhost”作为所需的服务器进行连接,它就可以正常工作。我已将相关权限包括在清单文件中。我正在使用通过谷歌搜索我的ip找到的公共ip地址。我也确保了端口的一致性

public class ClientServer implements AsyncTask<String> {

private int port;
private String serverAddress;
private DataOutputStream outStream;
//private DataInputStream inStream;
private MandelSample ms;

public ClientServer (String serverAddress, int port, MandelSample ms) {
    this.serverAddress = serverAddress;
    this.port = port;
    this.ms = ms;
}

public String fetchData (MandelSample ms) {
    SocketHints hints = new SocketHints();
    Socket clientSocket = Gdx.net.newClientSocket(Protocol.TCP, serverAddress, port, hints);
    outStream = new DataOutputStream(clientSocket.getOutputStream());
    String messageIN="Default Message";

    try {
        outStream.write("This message is from Android".getBytes());
        messageIN = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())).readLine();
    } catch (IOException e) {
        Gdx.app.log("ClientServer", "An error occured", e);
    }

    return messageIN;
}

@Override
public String call() throws Exception {
    String s = fetchData(ms);
    return s;
}
}
public类ClientServer实现异步任务{
专用int端口;
私有字符串服务器地址;
私有数据输出流外流;
//流内私有数据输入流;
私人样本ms;
公共客户端服务器(字符串服务器地址,int端口,ms){
this.serverAddress=服务器地址;
this.port=端口;
这个.ms=ms;
}
公共字符串获取数据(示例ms){
SocketHints-hints=new-SocketHints();
Socket clientSocket=Gdx.net.newClientSocket(Protocol.TCP,serverAddress,port,hints);
outStream=新的DataOutputStream(clientSocket.getOutputStream());
String messageIN=“默认消息”;
试一试{
write(“此消息来自Android.getBytes());
messageIN=new BufferedReader(新的InputStreamReader(clientSocket.getInputStream()).readLine();
}捕获(IOE异常){
Gdx.app.log(“ClientServer”,“发生错误”,e);
}
返回消息输入;
}
@凌驾
公共字符串调用()引发异常{
字符串s=获取数据(毫秒);
返回s;
}
}
我的日志:

com.badlogic.gdx.utils.GdxRuntimeException: Error making a socket       connection to 146.7.4.78:8080
02-24 09:51:59.872 16349-26646/com.mygdx.game W/System.err:     at    com.badlogic.gdx.net.NetJavaSocketImpl.<init>(NetJavaSocketImpl.java:51)
02-24 09:51:59.872 16349-26646/com.mygdx.game W/System.err:     at com.badlogic.gdx.backends.android.AndroidNet.newClientSocket(AndroidNet.java:70)
02-24 09:51:59.872 16349-26646/com.mygdx.game W/System.err:     at com.mygdx.game.ClientServer$override.fetchData(ClientServer.java:35)
02-24 09:51:59.872 16349-26646/com.mygdx.game W/System.err:     at com.mygdx.game.ClientServer$override.access$dispatch(ClientServer.java)
02-24 09:51:59.873 16349-26646/com.mygdx.game W/System.err:     at com.mygdx.game.ClientServer.fetchData(ClientServer.java:0)
com.badlogic.gdx.utils.GdxRuntimeException:与146.7.4.78:8080进行套接字连接时出错
02-24 09:51:59.872 16349-26646/com.mygdx.game W/System.err:com.badlogic.gdx.net.NetJavaSocketImpl.(NetJavaSocketImpl.java:51)
02-24 09:51:59.872 16349-26646/com.mygdx.game W/System.err:com.badlogic.gdx.backends.android.AndroidNet.newClientSocket(AndroidNet.java:70)
02-24 09:51:59.872 16349-26646/com.mygdx.game W/System.err:at com.mygdx.game.ClientServer$override.fetchData(ClientServer.java:35)
02-24 09:51:59.872 16349-26646/com.mygdx.game W/System.err:at com.mygdx.game.ClientServer$override.access$dispatch(ClientServer.java)
02-24 09:51:59.873 16349-26646/com.mygdx.game W/System.err:at com.mygdx.game.ClientServer.fetchData(ClientServer.java:0)

您确定这是本地网络中机器的IP吗?你怎么能用谷歌搜索你的IP?我想公共IP地址和我实际的ipv4地址是有区别的。这个修好了!当然可以公众可能会(取决于您的运营商)访问您路由器的IP。