Клиентский сокет Java не может быть привязан - PullRequest
0 голосов
/ 30 октября 2019

У меня есть метод:

void test(String clientIpPort, String serverIpPort) throws IOException {
        String[] clientParameters = clientIpPort.split(":");
        String[] serverParameters = serverIpPort.split(":");

        InetSocketAddress clientAddress = new InetSocketAddress(clientParameters[0], Integer.parseInt(clientParameters[1]));
        InetSocketAddress serverAddress = new InetSocketAddress(serverParameters[0], Integer.parseInt(serverParameters[1]));

        Socket socket = new Socket();
        socket.setReuseAddress(true);
        socket.bind(clientAddress);
        socket.connect(serverAddress, 2000);
        socket.shutdownOutput();
        socket.shutdownInput();
        socket.close();
    }

Когда я запускаю этот метод, я вижу в Packet Sender, что сокет действительно подключен. Когда я запускаю код дважды или более раз, я всегда получаю java.net.BindException адрес, который уже используется: connect. Как я могу выполнить это несколько раз в одном потоке, не получая BindException и не меняя порты сервера и клиента. В настоящее время это работает, только если я подожду 1-2 минуты, прежде чем снова запустить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...