@mr_blond97

Как изменить пример так что бы сервер ждал когда клиент подключится?

Разбираю пример с вебсокетами в 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)


Как изменить пример так что бы сервер бесконечно ждал когда клиент подключится?
  • Вопрос задан
  • 371 просмотр
Решения вопроса 1
lxsmkv
@lxsmkv
Test automation engineer
Прописать в ServerSocketHints переменную acceptTimeout = 0
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы