Back Up Next

Omrežni strežniki - ServerSocket

 
Za implementacijo strežnika v Javi uporabljano razred ServerSocket;
najpomembnejša metoda razreda ServerSocket je accept, ki povzroči, da začne strežnik poslušati na nekih vratih, vse dokler se nanje ne priključni nek odjemalec. Ko se odjemalec priključi, accept vrne ročico na objekt Socket, ki lahko potem služi za komunikacijo z odjemalcem;

 
 

Primer preprostega strežnika, na katerega se lahko priključimo z odjemalcem iz prejšnjega razdelka;

import java.net.*;
import java.io.*;

public class KnockKnockServer {
    public static void main(String[] args) throws IOException {

        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(4444);  // strežnik bo poslušal na vratih 4444
        } catch (IOException e) {
            System.err.println("Could not listen on port: 4444.");
            System.exit(1);
        }

        Socket clientSocket = null;
        try {
            clientSocket = serverSocket.accept();   // strežnik začne poslušati na vratih 4444
        } catch (IOException e) {
            System.err.println("Accept failed.");
            System.exit(1);
        }

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);  // odjemalec je priključen; 
        BufferedReader in = new BufferedReader(                                   // strežnik odpre tokova za branje/pisanje
                                new InputStreamReader(
                                clientSocket.getInputStream()));
        String inputLine;

        out.println("Welcome, my master. What is your wish?");  // začetno sporočilo

        while ((inputLine = in.readLine()) != null) {    // beremo dokler odjemalec ne reče quit
           if (inputLine.equals("quit"))
                break;
           out.println("Your wish is my command. I shall immediately " + inputLine);
        }
        out.close();
        in.close();
        clientSocket.close();  // obe vtičnici zapremo posebej
        serverSocket.close();
    }
}

 
 
Back Up Next