25.13.3 Lösungen(Projekt Schule- zu Hause)
 
Aufgabe 1
Download:
ClientGUI.
java
import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.net.*;

import java.io.*;



public class ClientGUI extends JFrame implements ActionListener {



    private JTextField ipFeld;

    private JTextArea textArea;

    private JButton sendenButton;

    private JPanel nordPanel, centerPanel;

    private JLabel textLabel, ipLabel;

    private Client einClient; //2a



    public ClientGUI (String title){

      super (title);

      setDefaultCloseOperation(EXIT_ON_CLOSE);

      setSize(250, 150);

      Container cp = getContentPane();

      cp.setLayout(new BorderLayout());



      nordPanel = new JPanel(new GridLayout(1, 2, -150, 10));

      cp.add(nordPanel, BorderLayout.NORTH);



      centerPanel = new JPanel(new GridLayout(1, 2, -150,10));

      cp.add(centerPanel, BorderLayout.CENTER);



      ipLabel = new JLabel("IP:");

      nordPanel.add(ipLabel);



      ipFeld = new JTextField("127.0.0.1",2);

      nordPanel.add(ipFeld);

      

      textLabel = new JLabel("Text:");

      centerPanel.add(textLabel);

      

      textArea = new JTextArea();

      textArea.setLineWrap(true); //1

      centerPanel.add(textArea);



      sendenButton = new JButton("Absenden");

      sendenButton.addActionListener(this);

      cp.add(sendenButton,BorderLayout.SOUTH);

      

      setVisible(true);
      einClient = new Client(); //2b

    }



    public void actionPerformed(ActionEvent e){             //3

     try{                                                  

       einClient.senden(textArea.getText(), ipFeld.getText());

     }catch (IOException exception) {};                    

    }                                                      



    public static void main (String[] args) {

      new ClientGUI("Client");

    }



}
  Bemerkungen:
//1: Die gelb unterlegten Zeilen markieren Neues gegenüber frühere GUIs. Die Methode
setLineWrap(boolean b) der Klasse JTextArea erlaubt Zeilenumbrüche.
//2: das in 2a deklarierte
Client-Objekt wird mit Hilfe des Standardkonstruktors in 2b erzeugt.
//3: Der Text, der verschickt  und die IP-Adresse, an die er verschickt werden soll werden aus den entsprechenden Feldern gelesen und als Parameter der
senden(String text, String ipAdresse) - Methode übergeben.
 
Aufgabe 2
Download:
Client.java
import java.net.*;

import java.io.*;



public class Client {

  public void senden (String text, String ip)

                     throws IOException, UnknownHostException{

     Socket anschluss = new Socket(ip, 6000);

     PrintWriter schreibeStrom = 

          new PrintWriter(anschluss.getOutputStream(),true);

     schreibeStrom.println(text);

     schreibeStrom.close();

  }

}
Aufgabe 3
Download:
ServerGUI.
java
import java.awt.*;
import javax.swing.*;
import java.io.*;

public class ServerGUI extends JFrame{

  private JTextArea ausgabeArea;
  private JLabel nachrichtenLabel;
  private String text;
  private Server einServer;

  public ServerGUI (String title){
    super (title);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(300, 300);
    Container cp = getContentPane();
    cp.setLayout(new BorderLayout());

    nachrichtenLabel = new JLabel("empfangene Nachrichten:");
    cp.add(nachrichtenLabel, BorderLayout.NORTH);

    ausgabeArea = new JTextArea("",2,1);
    ausgabeArea.setLineWrap(true); //lässt Zeilenumbruch zu
   
ausgabeArea.setEditable(false);
    cp.add(ausgabeArea, BorderLayout.CENTER);
    //ausgabeArea bekommt, falls nötig einen Scrollbar
   
cp.add(new JScrollPane(ausgabeArea), BorderLayout.CENTER);
    setVisible(true);
    einServer = new Server();

    while(true){
      try{
        text = einServer.empfangen();
        ausgabeArea.append(text+"\n");
      }
      catch(IOException exception) {}
    }
  }

  public static void main (String[] args) {
    new ServerGUI("Server");
  }
}
Aufgabe 4
Download:
Server.java
import java.net.*;

import java.io.*;



public class Server {



  public String empfangen() throws IOException{

     ServerSocket anschluss= new ServerSocket(6000);

     while(true){

       Socket lauschen = anschluss.accept();

       InputStreamReader portLeser = 

             new InputStreamReader(lauschen.getInputStream());

       BufferedReader eingabe = new BufferedReader(portLeser);

       String text = eingabe.readLine();

       return("von Client: " + text);

     }

  }

}
  Im IP-Feld wird trägt man die IP-Adresse des Rechners im Netz ein, auf dem der Server läuft.

zu 25.14 Internet
25.14.1 Aufbau und Adressierung im Netz und Internet
zur Startseite www.pohlig.de  (C) MPohlig 2005