hej,
mam problem, mam do zrobienia dwa programy do szkoły. chodzi o komunikacje klient-server.
Mam zrealizować następujace dwa protokoły
/*protokół:
* klient wysyła A, serwer odczytuje A
* serwer wysyla AA, klient odczytuje AA
* klient wysyła B, serwer odczytuje B
* serwer wysyła BB, klient odczytuje BB
* klient wysyła C, serwer odczytuje C
* serwer wysyla CC, klient odczytuje CC
* */
tutaj kody:
klient
public void run() {
String wiadomosc;
String wiadomosci[] = {"A", "B", "C"};
/*scenariusz :
* klient wysyła A, serwer odczytuje A
* klient wysyła AA, serwer odczytuje AA
* klient wysyła B, serwer odczytuje B
* */
try {
for (int i = 0; i < wiadomosci.length; i++) {
wyjscie.writeObject(wiadomosci[i]);
System.out.println("Klient wysyla: " + wiadomosci[i]);
wiadomosc = (String) wejscie.readObject();
if (wiadomosc!=null)
System.out.println("Klient odbiera: " + wiadomosc);
else break;
}
gniazdo_klienta.close();
wyjscie.close();
wejscie.close();
} catch (Exception e) {
System.out.println("Wyjatek klienta 2 " + e);
}
}
serwer:
public void run() {
String wiadomosc;
String wiadomosci[] = {"AA", "BB", "CC"};
try {
/* klient wysyła A, serwer odczytuje A
* */
for (int i = 0; i < wiadomosci.length; i++) {
wiadomosc = (String) wejscie.readObject();
if (wiadomosc != null) {
System.out.println("Serwer odbiera: " + wiadomosc);
} else {
break;
}
wyjscie.writeObject(wiadomosci[i]);
System.out.println("Serwer wysyla: " + wiadomosci[i]);
}
wejscie.close();
wyjscie.close();
gniazdo_klienta.close();
} catch (Exception e) {
System.out.println("Wyjatek komponentu klienta po stronie serwera " + e);
}
}
}
ten działa jak najbardziej poprawnie, ale nie wiem jak zabrać sie do drugiego
serwer wysyła A1 / klient odbiera A1
Klient wysyła B1 / serwer odbiera B1
Klient wysyła B2 / server odbiera B2
Server wysyła A2 / klient odbiera A2
tutaj najpierw wysyła serwer potem jakby stopuje (odbiera dwie wiadomości od klienta) i znowu wysyła kolejną wiadomosc.