Разбираю
пример с вебсокетами в libgdx. Комментирую часть кода в которой создается клиент:
public class PingPongSocketExample extends GdxTest {
@Override
public void create () {
// setup a server thread where we wait for incoming connections
// to the server
new Thread(new Runnable() {
@Override
public void run () {
ServerSocketHints hints = new ServerSocketHints();
ServerSocket server = Gdx.net.newServerSocket(Protocol.TCP, "localhost", 9999, hints);
// wait for the next client connection
Socket client = server.accept(null);
// read message and send it back
try {
String message = new BufferedReader(new InputStreamReader(client.getInputStream())).readLine();
Gdx.app.log("PingPongSocketExample", "got client message: " + message);
client.getOutputStream().write("PONG\n".getBytes());
} catch (IOException e) {
Gdx.app.log("PingPongSocketExample", "an error occured", e);
}
}
}).start();
// create the client send a message, then wait for the
// server to reply
// SocketHints hints = new SocketHints();
// Socket client = Gdx.net.newClientSocket(Protocol.TCP, "localhost", 9999, hints);
// try {
// client.getOutputStream().write("PING\n".getBytes());
// String response = new BufferedReader(new InputStreamReader(client.getInputStream())).readLine();
// Gdx.app.log("PingPongSocketExample", "got server message: " + response);
// } catch (IOException e) {
// Gdx.app.log("PingPongSocketExample", "an error occured", e);
// }
}
}
Сервер ждет подключения клиента несколько секунд и выдает исключение:
Exception in thread "Thread-7" com.badlogic.gdx.utils.GdxRuntimeException: Error accepting socket.
at com.badlogic.gdx.backends.lwjgl.LwjglServerSocket.accept(LwjglServerSocket.java:83)
at HelloWorldWebsocket.WebsocketClient$1.run(WebsocketClient.java:44)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.SocketTimeoutException: Accept timed out
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
at java.net.ServerSocket.implAccept(ServerSocket.java:545)
at java.net.ServerSocket.accept(ServerSocket.java:513)
at com.badlogic.gdx.backends.lwjgl.LwjglServerSocket.accept(LwjglServerSocket.java:80)
Как изменить пример так что бы сервер бесконечно ждал когда клиент подключится?