konto usunięte

Temat: dziedziczenie z klasy Socket, tworzenie aplikacji serwera...

Witam :)
piszę aplikację i chciałbym aby jedna klas dziedziczyła po klasie Socket
to raczej nie jest problem
mam osobną klasę dla aplikacji serwera
aplikacja server tworzy gniazdo klienta, z racji że klasa Client dziedziczy po klasie Socket to w konstruktorze klasy ServerApp robię coś takiego:
public ServerApp(Client clientSocket_) {
this.client = clientSocket_;
}

w main'ie mam:

ServerSocket server = null;
try {
server = new ServerSocket(ServerApp.port);
while(true)
new ServerApp(server.accept()).start();

no i tutaj mam problem bo server.accept() zwraca obiekt typu Socket, a ja mam w konstruktorze jako parametr przyjąć obiekt klasy Client

proszę o pomoc

konto usunięte

Temat: dziedziczenie z klasy Socket, tworzenie aplikacji serwera...

Czesc
Nie wnikam po co Ci to potrzebne, odpowiadajac na pytanie - moze nadpisz klase ServerSocket i skorzystaj z covariant return types (zakladam ze wersja >= 5) albo dodaj konstruktor ClientSocket(Socket) i deleguj metody do socketa podanego w konstruktorze --> bedziesz mial wtedy
new ServerApp(new ClientSocket(server.accept()).start()Pawel Dolega edytował(a) ten post dnia 29.03.08 o godzinie 13:49

konto usunięte

Temat: dziedziczenie z klasy Socket, tworzenie aplikacji serwera...

Pawel Dolega:
Nie wnikam po co Ci to potrzebne, odpowiadajac na pytanie
a co lepiej tak nie robić? :P
chcę napisać prosty komunikator, i myślałem żeby właśnie tak klasę klienta zrobić, ale może lepiej przekazywać obiekt klasy Socket jako parametr niż dziedziczyć po niej. sam nie wiem :P
Zacheusz Siedlecki

Zacheusz Siedlecki Senior Java
Architect, Working
Manager

Temat: dziedziczenie z klasy Socket, tworzenie aplikacji serwera...

jeśli chcesz dziedziczyć to możesz zrobić delegację, czyli:

class Client extends Socket {
Socket socket;

public Client (Socket socket) {
this.socket = socket;
}
public void bind(SocketAddress bindpoint) throws IOException {
socket.bind(bindpoint);
}

public void close() throws IOException {
socket.close();
}

i tak dalej dla wszystkich metod. Możesz sobie pomóc w Eclipse pisząc najpierw
class Client extends Socket {
Socket socket;

public Client (Socket socket) {
this.socket = socket;
}
klikając na socket prawym przyciskiem i z menu
Source->Genetrate Delegate Methods...Zacheusz Siedlecki edytował(a) ten post dnia 29.03.08 o godzinie 14:02

Następna dyskusja:

developerzy aplikacji webow...




Wyślij zaproszenie do