Поддерживайте активный сокет между Java-клиентом и VB-сервером

#java #vb.net #sockets

#java #vb.net #розетки

Вопрос:

Я создал программу для отправки и получения данных от клиента к серверу, а для клиента я использовал java, а для сервера я использовал Visual Basic, так как установить соединение между клиентом и сервером, чтобы поддерживать его на стороне клиента (java)?

это код от клиента :

 public static void Client(){
    String print = "";
    String dataDB = "Hello server, From Client";
    try(Socket clientSocket = new Socket("localhost", port)){

        clientSocket.getOutputStream().write(dataDB.getBytes("ASCII"));
        while (clientSocket.getInputStream().available() == 0) {
            Thread.sleep(100L);
        }
        byte[] data = new byte[clientSocket.getInputStream().available()];
        
        int bytes = clientSocket.getInputStream().read(data, 0, data.length);
        
        print = new String(data, 0, bytes, "ASCII");//.substring(4,bytes);
        
        while(print.length()>0){
            System.out.println("From Server : " print);
        }
    }catch (IOException ex){
        System.out.println("I/O error: "   ex.getMessage());
    }catch(InterruptedException ie){
        System.out.println("error: "   ie.getMessage());
    }catch(Exception e){
        System.out.println("error: "   e.getMessage());
    }
}
 

Java-клиент — это консольное приложение, просто отправленное и получающее данные с сервера, который я пытался использовать clientSocket.setKeepAlive(true); , но не работает.

Комментарии:

1. Учитывая, что Интернет спроектирован с учетом сбоев (он был разработан для работы, даже если несколько узлов были удалены атомными бомбами), вы всегда должны быть готовы к неожиданному закрытию сокетов.

2. @JohnEason Я исправил тег

3. @NomadMaker возможно ли, если я установлю тесное соединение другим методом?

4. например, я создал свойство private Socket clientSocket = null; и я создаю другой метод для обработки соединения и транзакции, а также другой метод для обработки connection.close

5. Не могли бы вы закрыть соединение, пока оно все еще используется?