Gniazdka serwerów

Rola serwera

Po co serwer w Java

Serwer w Java

Cykl życia serwera

Obsługa kilku klientów

Obsługa kilku klientów

Klienci powinni pracować w wątkach a niejako procesy potomne.

Klasa SerwerSocket

public SocketSerwer (int port) throws IOException,

BindException

public SocketSerwer (int port, ąueueLength} throws

IOException, BindException

public SocketSerwer (int port, ąueueLength.

IntAddress bindAddress) throws IOException

Konstruktory

pnblic SocketSer\ver (int port) throws TOExccption, BindException

- port jest zajęty

- dla portów l - 1023 w UNIK wymagane są uprawnienia ROOT

try{ SerwerSocket httpd = new SerwerSocket(80):} Catch(IOExceptione){System.err.println(e);}

Przykład

import java.net.*;imporlJLna.io.*:;

public class LocalPortScanner {

public static void main(String[] args) {

for (int port = l; port <= 65535; port++) {

try {// Następna linia spowoduje błąd i przejdzie do bloku catch, jeśli na porcie działa już serwer

ServerSocket server = new ServerSocket(port);

}

catch (IOException e) {

System.out.println("Na porcie " + port + "działa serwer.");

} // koniec try

} // koniec for }}

Obsługa pojedynczego klienta

ServerSocket serwer = new ServerSocket(5776);

while( tnie) {

Socket connection = new serwer.acceptf); //nasłuch

OutputStreamWriter out = new

OutputStreamWriter(cormection.getOtputStrearri());

out.write("Połaczyłeś się?");

connection.close(); }

Sytuacje wyjątkowe.

..złgoszone przez:

Pobieranie informacji o gniazdach

public InetAddress getInetAddress()

try{

ServerSocket httpd = new ServerSoclcet(80);

InetAddress ai = htlpd.getInetAddress();

}

Catch (IOException e){

}

Pobieranie informacji o gniazdach

public InetAddress getLocalPort()

Opcje gniazdek