Komunikacja klient-serwer.

0

Pisze aplikacje okienkowa w której użytkownik ma możliwość logowania się i pobierania pewnych danych tekstowych z serwera za pomocą protokołu TCP/IP. Myślałem nad tym jak powinien działać taki program i obmyśliłem to w ten sposób. Użytkownik logując się wysyła login i hasło do serwera napisanego w javie znajdującego się na maszynie wirtualnej. Tam serwer pobiera dane z mysql i decyduje czy udostępnić użytkownikowi zasoby czy nie. Jeśli tak to generuje kilku znakowego stringa zapisuje go w zmiennej i wysyła do klienta znajdującego się na komputerze użytkownika, gdy użytkownik chce uzyskać dostęp do jakiś zasobów klient wysyła dla serwera jego unikatowy ciąg znaków. Serwer po porównaniu ciągów znaków decyduje czy udostępnić zasoby. Unikatowy ciąg zmienia się co jakiś czas np. 15 minut. Zastanawiam się jak napisać komunikacje z klienta do serwera, myślałem żeby utworzyć metode która działała by jak serwer po stronie klienta i wysyłała dane do serwera znajdującego się na maszynie wirtualnej ale część ludzi ma wewnętrzne adresy IP i w tym momencie pojawia się problem. Zastanawiam się czy jest jakiś inny, lepszy protokół komunikacyjny do takich zastosowań, czy może takie aplikacje robi się w jakiś inny sposób?

0

Wszystko jest ok, nie widzę nigdzie problemu.

Chyba, że chcesz potem innymi klientami, do innych klientów się łączyć bez pośrednictwa serwera, to będzie problem.

0

Możliwe, że czegoś nie rozumiem lub nie wykorzystuje mam taki kod(pisane na podstawie kilku przykladów które znalazlem):
Serwer:

import java.net.*;
import java.io.*;
import java.util.Scanner;

public class SERWER{
    public static void main(String[] args){
        try{
                String S1;
                for(int I1=1;I1>0;I1++) {
                    ServerSocket SERVER = new ServerSocket(3106);
                    Socket socket1 = SERVER.accept();
                    System.out.println("SERWER POLACZONY");
                    Scanner SC1 = new Scanner(System.in);
                    S1 = SC1.nextLine();
                    if(S1!=null) {
                        PrintWriter out = new PrintWriter(socket1.getOutputStream(), true);
                        out.print(S1);
                        out.close();
                    }
                    socket1.close();
                    SERVER.close();
                }
        }catch(UnknownHostException exc){
            System.out.println("Nieznany host");
        }catch(SocketException exc){
            System.out.println("GNIAZDO");
        }catch(IOException exc){
            System.out.println("Inny wyjatek");
        }
    }
}

_____________________________________________________________________________________________________________

Klient:
import java.io.*;
import java.net.*;
import java.util.Scanner;

public class klient{
    public static void main(String[] args){
        try {
            String S1;
            Scanner SC1= new Scanner(System.in);
            S1=SC1.nextLine();
            for(int I1=1;I1>0;I1++) {
                Socket klient = new Socket(S1,3106);
                BufferedReader in = new BufferedReader(new InputStreamReader(klient.getInputStream()));
                while (!in.ready()) {
                }
                System.out.println(in.readLine());
                in.close();
            }
        }catch(UnknownHostException exc){
            System.out.println("Nieznany host");
        }catch(SocketException exc){
            System.out.println("GNIAZDO");
        }catch(IOException exc){
            System.out.println("Inny wyjatek");
        }
    }
}

Zastanawiam się jak klient ma wysyłać dane do serwera, bez wykorzystania np. ServerSocker?

1 użytkowników online, w tym zalogowanych: 0, gości: 1