java libGDX:SocketTimeoutException与安卓
我目前正在使用libgdx。我想通过WebSocket连接到已经运行的Java服务器应用程序。 当我启动桌面应用程序时,everythins工作正常,但安卓应用程序无法连接
我收到以下LogCat输出:
03-13 16:05:21.508: E/AndroidRuntime(27405): FATAL EXCEPTION: GLThread 2370 03-13 16:05:21.508: E/AndroidRuntime(27405): Process: com.myProject.安卓, PID: 27405 03-13 16:05:21.508: E/AndroidRuntime(27405): com.badlogic.gdx.utils.GdxRuntimeException: Error making a socket connection to 192.168.1.100:4444 03-13 16:05:21.508: E/AndroidRuntime(27405): at com.badlogic.gdx.net.NetJavaSocketImpl.(NetJavaSocketImpl.java:51) 03-13 16:05:21.508: E/AndroidRuntime(27405): at com.badlogic.gdx.backends.安卓.AndroidNet.newClientSocket(AndroidNet.java:70) 03-13 16:05:21.508: E/AndroidRuntime(27405): at com.myProject.ServerConnector.connect(ServerConnector.java:53) 03-13 16:05:21.508: E/AndroidRuntime(27405): at com.myProject.application.XDKVisualizer.create(XDKVisualizer.java:61) 03-13 16:05:21.508: E/AndroidRuntime(27405): at com.badlogic.gdx.backends.安卓.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:241) 03-13 16:05:21.508: E/AndroidRuntime(27405): at 安卓.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1512) 03-13 16:05:21.508: E/AndroidRuntime(27405): at 安卓.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240) 03-13 16:05:21.508: E/AndroidRuntime(27405): Caused by: java.net.SocketTimeoutException: failed to connect to /192.168.1.100 (port 4444) after 2147483647ms: isConnected failed: ETIMEDOUT (Connection timed out) 03-13 16:05:21.508: E/AndroidRuntime(27405): at libcore.io.IoBridge.isConnected(IoBridge.java:225) 03-13 16:05:21.508: E/AndroidRuntime(27405): at libcore.io.IoBridge.connectErrno(IoBridge.java:165) 03-13 16:05:21.508: E/AndroidRuntime(27405): at libcore.io.IoBridge.connect(IoBridge.java:116) 03-13 16:05:21.508: E/AndroidRuntime(27405): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 03-13 16:05:21.508: E/AndroidRuntime(27405): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:460) 03-13 16:05:21.508: E/AndroidRuntime(27405): at java.net.Socket.connect(Socket.java:838) 03-13 16:05:21.508: E/AndroidRuntime(27405): at com.badlogic.gdx.net.NetJavaSocketImpl.(NetJavaSocketImpl.java:46) 03-13 16:05:21.508: E/AndroidRuntime(27405): ... 6 more 03-13 16:05:21.508: E/AndroidRuntime(27405): Caused by: libcore.io.ErrnoException: isConnected failed: ETIMEDOUT (Connection timed out) 03-13 16:05:21.508: E/AndroidRuntime(27405): at libcore.io.IoBridge.isConnected(IoBridge.java:212) 03-13 16:05:21.508: E/AndroidRuntime(27405): ... 12 more
以下是服务器和客户端应用程序的代码片段: 服务器:
ServerSocket serverSocket = new ServerSocket(mPort);
try {
while (listening) {
Socket clientSocket = serverSocket.accept();
Thread sender = new SensorDataSender(clientSocket, numClients++);
sender.start();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
serverSocket.close();
}
客户:
SocketHints hints = new SocketHints();
hints.connectTimeout = CONNECTION_TIMEOUT;
hints.socketTimeout = SOCKET_TIMEOUT;
Socket socket = Gdx.net
.newClientSocket(Protocol.TCP, mIp, mPort, hints);
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
new EventProcessor(in).start();
你知道为什么这样不行吗?我已经尝试了kyronet替代方案,并收到了相同的超时
比尔, 弗洛
共 (0) 个答案