hej.
Mój projekt dotyczy przesyłania serializowanych obiektów w aplikacji okienkowej.
Mój klient:
public class Klient extends JFrame
{ private Socket socket;
ObjectOutputStream OOS=null;
ObjectInputStream OIS=null;
Klient() {
try {
socket = new Socket("localhost", 2020);
System.out.println("Klient dziala: ");
} catch (IOException e) {
System.out.println("Uruchom serwer: " + e);
System.exit(1);
}
}
public static void main(String[] args) throws Exception
{ /*String nazwaPliku="E:\\Pliczek.txt";
Towar t1=new Towar("123","nazwa",234,"producent");
Magazyn m1 = new Magazyn();
m1.dodaj(t1);
//tutaj wywołanie funkcji na rzecz obiektu m1 tj. zapis tablicy do pliku oraz odczytanie z pliku
m1.dopiszPlik(nazwaPliku);
m1.odczytajPlik(nazwaPliku);
Klient okno = new Klient("Zarzadzanie magazynem");
{ //okno.init();
okno.setVisible(true);
okno.pack();
Klient client = new Klient();
client.uruchom();
}
void uruchom() throws Exception {
String messageFromServer = null;
OIS = new ObjectInputStream(socket.getInputStream());
OOS = new ObjectOutputStream(socket.getOutputStream());
//powyżej utworzenie strumieni.
}
Klient(String tytul) { super(tytul); }
void init() { //tutaj jakies przyciski, pola do wyswietlania itp. }
Klasa Serwer:
package klasy;
public class Serwer {
int serverPort = 2020;
ServerSocket SerwerSoketSerwera;
Socket socketDoKlienta;
ObjectInputStream OIS=null;
ObjectOutputStream OOS=null;
Serwer() {
try {
SerwerSoketSerwera = new ServerSocket(serverPort);
System.out.println("Serwer dziala");
} catch (IOException e) {
System.out.println("Nie można utworzyć gniazda");
System.exit(1);
}
}
public static void main(String args[]) throws Exception {
Serwer server = new Serwer();
server.uruchom();
server.SerwerSoketSerwera.close();
}
void uruchom() throws Exception {
socketDoKlienta = SerwerSoketSerwera.accept();
OIS = new ObjectInputStream(socketDoKlienta.getInputStream());
OOS= new ObjectOutputStream(socketDoKlienta.getOutputStream());
}
SerwerSoketSerwera.close();
}
Mam nadzieje że nie pousuwałem potrzebnych rzeczy.
Nazwy socketów są dosyć jasne ;)
Teraz bardzo ważne pytanie jak użyć tych strumieni? Funkcje na plikach/tablicach (odczyt/zapis)obiektów serializowanych to dopiszPlik() i odczytajPlik() ale nie bardzo wiem jak tablice obiektów wysłać przez strumień oraz jak z takiego strumienia odebrać i np zapisac do zmiennej? jak użyć funkcji writeObject albo readObject i ewentualnie podpiąć ją pod przycisk? Bardzo proszę o jakiś zrozumiały przykład.