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 |