Informatika gyűjtemény

Egy szinttel feljebb 22. óra

2004050607080910

NézetNyomtat

22. óra

(Erben Péter, 2008. 03. 17.)

TCP/IP 1.rész, összeköttetés alapú szerver

Iteratív szerver

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

public class TCPszerver {
    public static void main(String[] args){
    if(args.length == 1){
        try{
        boolean szolgalatban = true;
        int port = Integer.parseInt(args[0]);
        ServerSocket serversock = new ServerSocket(port,10);
        while(szolgalatban){
        
            // új kliens
            Socket kliensem = serversock.accept();
            System.out.println("új kliens:"+kliensem.getInetAddress().toString());
            
            // Ki-be csatornák
            InputStream is = kliensem.getInputStream();
            BufferedReader kis = new BufferedReader(new InputStreamReader(is));
            OutputStream os = kliensem.getOutputStream();
            PrintWriter kos = new PrintWriter(os);
            
            // üdvözlet
            kos.print("You are now connected to prog.berzsenyi.hu:12345\r\n");
            kos.flush();
            
            // szolgálat
            String be_sor = kis.readLine();
            System.out.println(kliensem.getInetAddress().toString()+": "+be_sor);
            kos.println(be_sor+be_sor);
            
            // zárás
            kos.flush();
            kis.close();
            kos.close();
            kliensem.close();
            if(be_sor.equals("vege")){
            //szolgalatban=false;
            }               
        }
        serversock.close();
        }
        catch (SocketException se){
        System.out.println("Socket hiba:"+se.getMessage());
        }
        catch (IOException ie){
            System.out.println("IO hiba");
        }
        
    } else {
        System.out.println("Hí­vása: java TCPszerver port");
    }
    }
}

Többszállú szerver

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

public class TCPPszerver {
    public static void main(String[] args){
    if(args.length == 1){
        try{
        boolean szolgalatban = true;
        int port = Integer.parseInt(args[0]);
        ServerSocket serversock = new ServerSocket(port,10);
        while(szolgalatban){
        
            // új kliens
            Socket kliensem = serversock.accept();
            System.out.println("új kliens:"+kliensem.getInetAddress().toString());
            
            // szolgáló folyamat indí­tása 
            new Kiszolgalo(kliensem).start();
            
        }
        serversock.close();
        }
        catch (SocketException se){
        System.out.println("Socket hiba:"+se.getMessage());
        }
        catch (IOException ie){
            System.out.println("IO hiba");
        }
        
    } else {
        System.out.println("Hívása: java TCPszerver port");
    }
    }
}
import java.net.*;
import java.io.*;

public class Kiszolgalo extends Thread {
    
    private Socket kliensem;
    public boolean mehet=true;
    
    public Kiszolgalo(Socket s){
    super("Kiszolgalo");
    kliensem = s;
    }
    
    public void run(){      
        
    
    try{        
    // Ki-be csatornák
    InputStream is = kliensem.getInputStream();
    BufferedReader kis = new BufferedReader(new InputStreamReader(is));
    OutputStream os = kliensem.getOutputStream();
    PrintWriter kos = new PrintWriter(os);
    
    String be_sor;
    while(mehet){                   
    // szolgálat
        be_sor = kis.readLine();
        System.out.println(kliensem.getInetAddress().toString()+": "+be_sor);
        kos.println(be_sor+be_sor);
        kos.flush();
        if(be_sor.equals("exit")){
        mehet = false;
        }
    }       
    // zárás
    kis.close();
    kos.close();
    kliensem.close();
    }
    catch(SocketException se){
    
    }
    catch(IOException ie){
    
    }   
    }
}