Class Client

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by Client
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.lang.Runnable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class Client
extends javax.swing.JFrame
implements java.lang.Runnable

Die Client-Klasse

Die Implementierung des Clients geschieht mit dieser Klasse. Jede Verbindung, die vom Client aufgebaut wird, erhält mittels den Thread-Implementierung eine eigene Instanz der Client-Klasse die den Daten versand ermöglicht. Von der Clientklasse ist es möglich mehrere Instanzen zu erstellen und dies auch für den parallelen Datei versand an verschiedene Empfänger. Dies wird in der ByteTaxi-Klasse realisiert.

Desweiteren implementiert die Klasse das Interface Runnable für die Threads.

See Also:
Runnable (Java API), Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
(package private)  java.net.InetAddress addr
          Enthaelt Netzwerkinformationen ueber den Clienten / localhost.
(package private)  java.lang.String antwort
          Antwort vom Empfaenger wird gespeichert und anschliessend ausgewertet.
(package private)  javax.swing.JProgressBar bar
          Eine Progressbar / Prozessbalken, die den Sendeprozess anzeigt.
(package private)  java.lang.String benutzer
          Enthaelt den Benutzernamen aus dem System.
(package private)  java.io.BufferedReader br
          Der BufferedReader bekommt den Charakterstrom vom InputStreamReader zugewiesen.
(package private)  java.io.BufferedWriter bw
          Der BufferedWriter erhaelt den Charakterstrom vom OutputStreamWriter.
(package private)  java.lang.String dateiname
          Der Dateiname wird aus dem FileChooser herausgelesen.
(package private)  boolean erfolg
          Uepruefungsvariable fuer die Komplette Dateiuebertragung.
(package private)  javax.swing.JFileChooser fc
          Ein Dateiauswahlfenster womit man die zu Sendende Datei auswaehlt.
(package private)  java.io.File file
          Das File-Objekt, wird die Datei zugewiesen bekommen die zum Senden Vorbereitet wird.
(package private)  java.io.FileInputStream fis
          Der FileInputStream erhaelt als Parameter ein File-Objekt, dieses liest er mittels diesem FileInputStream ein.
(package private)  java.lang.String host
          Der Zielrechner wird durch Benutzereingabe, in host gespeichert.
(package private)  java.net.InetAddress hostinet
          Enthaelt die Netzwerkinformationen ueber den Zielrechner.
(package private)  java.io.InputStream is
          Der InputStream erhaelt den FileInputStream um in konfortabeler einzulesen.
(package private)  java.io.InputStreamReader isr
          Der InputStream kriegt den Bytestrom vom InputStream, aus dem er dann einen Charakterstrom erzeugt.
(package private)  java.net.Socket meinSocket
          Socket das eine Verbindung zum Zielrechner mit der Addresse von hostinet aufbaut.
(package private)  java.io.OutputStream os
          Der OutputStream wird auf den OutputStream des Sockets gesetzt, beim Empfaenger wird dieser auf den InputStream den Sockets gesetzt.
(package private)  java.io.OutputStreamWriter osr
          Der OutputStream wird dann wiederum in diesem OutputStreamWriter verpackt.
private static long serialVersionUID
          Routine Serialisierbarkeits ID.
(package private)  java.lang.String session_host
          Der Zielrechner wird innerhalb einer Sitzung mit dem zuletzt benutzten vorgegeben.
(package private)  java.lang.String session_pfad
          Der letzte benutzte Ordnerpfad wird innerhalb einer Sitzung gespeichert.
(package private)  java.io.InputStream socketis
          InputStream der den InputStream vom eigenen Socket zugewiesen bekommt.
(package private)  java.io.OutputStream socketos
          OutputStream wird auf den OutputStream vom eigenen Socket gesetzt.
(package private)  java.awt.TrayIcon trayIcon
          Das TrayIcon Objekt, wird von der ByteTaxi-Klasse uebergeben.
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
Client(java.awt.TrayIcon ico)
          Konstruktor der Client-Klasse.
 
Method Summary
(package private)  void clientinfo()
          gibt Informationen ueber der Clienten / Localhost / Sender aus.
 void run()
          Die run()-Methode, die eigentliche Main Methode dieser Klasse.
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setVisible, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

serialVersionUID

private static final long serialVersionUID
Routine Serialisierbarkeits ID.

See Also:
Constant Field Values

benutzer

java.lang.String benutzer
Enthaelt den Benutzernamen aus dem System.


addr

java.net.InetAddress addr
Enthaelt Netzwerkinformationen ueber den Clienten / localhost.


hostinet

java.net.InetAddress hostinet
Enthaelt die Netzwerkinformationen ueber den Zielrechner.


meinSocket

java.net.Socket meinSocket
Socket das eine Verbindung zum Zielrechner mit der Addresse von hostinet aufbaut.


is

java.io.InputStream is
Der InputStream erhaelt den FileInputStream um in konfortabeler einzulesen.


os

java.io.OutputStream os
Der OutputStream wird auf den OutputStream des Sockets gesetzt, beim Empfaenger wird dieser auf den InputStream den Sockets gesetzt.


fis

java.io.FileInputStream fis
Der FileInputStream erhaelt als Parameter ein File-Objekt, dieses liest er mittels diesem FileInputStream ein.


file

java.io.File file
Das File-Objekt, wird die Datei zugewiesen bekommen die zum Senden Vorbereitet wird.


socketis

java.io.InputStream socketis
InputStream der den InputStream vom eigenen Socket zugewiesen bekommt. Dieser liefert ein Strom aus Bytes.


isr

java.io.InputStreamReader isr
Der InputStream kriegt den Bytestrom vom InputStream, aus dem er dann einen Charakterstrom erzeugt.


br

java.io.BufferedReader br
Der BufferedReader bekommt den Charakterstrom vom InputStreamReader zugewiesen. Dieser kann aus dem Charakterstrom Text herauslesen.


socketos

java.io.OutputStream socketos
OutputStream wird auf den OutputStream vom eigenen Socket gesetzt. Dieser schreib dann Bytes.


osr

java.io.OutputStreamWriter osr
Der OutputStream wird dann wiederum in diesem OutputStreamWriter verpackt. Dieser Wandelt den Bytestrom in einen Charakterstrom um.


bw

java.io.BufferedWriter bw
Der BufferedWriter erhaelt den Charakterstrom vom OutputStreamWriter. Dieser schreibt ein Text in den Charakterstrom.


fc

javax.swing.JFileChooser fc
Ein Dateiauswahlfenster womit man die zu Sendende Datei auswaehlt.


bar

javax.swing.JProgressBar bar
Eine Progressbar / Prozessbalken, die den Sendeprozess anzeigt.


host

java.lang.String host
Der Zielrechner wird durch Benutzereingabe, in host gespeichert.


session_host

java.lang.String session_host
Der Zielrechner wird innerhalb einer Sitzung mit dem zuletzt benutzten vorgegeben.


session_pfad

java.lang.String session_pfad
Der letzte benutzte Ordnerpfad wird innerhalb einer Sitzung gespeichert.


dateiname

java.lang.String dateiname
Der Dateiname wird aus dem FileChooser herausgelesen.


antwort

java.lang.String antwort
Antwort vom Empfaenger wird gespeichert und anschliessend ausgewertet.


erfolg

boolean erfolg
Uepruefungsvariable fuer die Komplette Dateiuebertragung.


trayIcon

java.awt.TrayIcon trayIcon
Das TrayIcon Objekt, wird von der ByteTaxi-Klasse uebergeben.

Constructor Detail

Client

public Client(java.awt.TrayIcon ico)
Konstruktor der Client-Klasse.

bekommt das TrayIcon von der ByteTaxi Klasse uebergeben, setzt groesse und Position des JFrames fest, Layout wird bestimmt, TrayIcon werd der Lokalen Kopie zugewiesen und die JProgressBar wird eingesetzt.

Weitere Informationen sind in der Beschreibung der run()-Methode zulesen.

Parameters:
ico - TrayIcon von der ByteTaxi Klasse
Method Detail

clientinfo

void clientinfo()
          throws java.net.UnknownHostException
gibt Informationen ueber der Clienten / Localhost / Sender aus.

Throws:
java.net.UnknownHostException

run

public void run()
Die run()-Methode, die eigentliche Main Methode dieser Klasse.

Die run()-Methode wird ausgefuert sobald der Thread von der ByteTaxi-Klasse gestartet wird. Mittels eines JOptionPane Eingabedialog wird der Host eingelesen. Dies kann ein Rechnername oder eine IP-Adresse sein. Es wird oefters ueberprueft ob der Thread gestoppt werden muss, und wird mit "meinThread.isInterrupted" geprueft. Der Socket wird initialisiert und eine Verbindung zum Host wird versucht aufzubauen. Falls keine moeglich ist, tritt der Fehler "UnknownHostException" ein. Nachdem eine Verbindung aufgebaut wurde, wird die zu sendende Datei mittels den FileChooser ausgewaehlt. Der Dateiname, die Dateigroesse werden, nachdem eine File-Instanz mittels den Dateinamen erstellt wird herausgelesen. Der Sender schreibt mittels dem OutputStream auf den InputStream des Empfaengers einen CharakterStrom bestehend aus Informationen, die den Dateinamen, die Dateigroesse und den Benutzername des Senders enthalten. Der Empfaenger entscheidet, ob er den Dateiempfang annimmt. Wenn dieser annimmt, sendet er "true" mittels Text. Dies wird mit der Antwort Variable analysiert und der eigentliche Dateiversand wird vorbereitet. Die neuen Input- und OutputStreams werden initialisiert. Der FileInputStream enthaelt den Dateistrom der Datei. Dieser wird mit dem InputStream in einen ByteStrom umgewandelt. Der OutputStream schreibt diesen ByteStrom auf den InputStream des Empfaengers. Durch die vorher herausgelesene Dateigroesse wird nach dem Versand ueberprueft, ob alle Bytes uebertragen wurden und ein entsprechender Ballon-Tip mit der Meldung angezeigt. Falls der Empfaenger den Dateiversand verweigert, sendet er ein "false" als Text und dies wird mit dem ersten InputStream gelesen und analysiert. Anschließend wird dann per JOptionPane ein Hinweis ausgegeben, dass der Empfaenger den Dateiempfang verweigert hat und der Thread wird mittels Interrupt beendet.

Specified by:
run in interface java.lang.Runnable
See Also:
Runnable (Java API), Thread (Java API)