|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
ThrServer
public class ThrServer
Die ThrServer Klasse.
Die ThrServer Klasse ist die eigentliche Klasse, die für den Dateiempfang zuständig ist. Gesteuert wird sie von der Server-Klasse, die einzelne Threads von "ThrServer" startet, sobald eine Verbindung eingeht. Mittels den Threads ist es möglich mehrere Instanzen der Klasse zu starten und ein paralleler Dateiempfang von verschiedenen Verbindung ist damit möglich.
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) javax.swing.JProgressBar |
bar
Eine Progressbar / Prozessbalken, die den Empfangsprozess anzeigt. |
(package private) java.lang.String |
benutzer
Der Benutzername auf den Senderrechner wird gespeichert. |
(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) boolean |
check
Check Variable die die Entscheidung für den Dateiempfang behandelt. |
(package private) java.net.Socket |
clientSocket
Die Eingehende Verbindung wird von der Serverklasse einem Socket zugewiesen, dieser uebergibt diesen und wird den Lokalen zugeordnet. |
(package private) long |
dateigroesse
Long Variable die, die aus dem InputStream herausgelesene Dateigroesse der Anfrage enthaelt. |
(package private) java.lang.String |
dateiname
Stringvariable die den Dateiname enthaelt, heraus gelesen aus der InputStream, der Anfrage des Senders. |
(package private) java.lang.String |
eigenerbenutzer
Stringvariable die den Eigenen Benutzernamen aus dem System liest. |
(package private) boolean |
erfolg
Uepruefungsvariable fuer die Komplette Dateiuebertragung. |
(package private) java.io.File |
file
Ein File-Objekt wird mittels den Dateiname erstellt. |
(package private) java.io.FileOutputStream |
fos
Das File-Objekt wird dem FileOutputStream zugewisen, ein Schreibender Dateistrom auf der Datei. |
(package private) int |
groessse
Variable die, die Tatsaechlig geschriebenen Bytes zaehlt, wird benoetigt um uebertragung zu kontrollieren. |
(package private) java.lang.String |
home
Stringvariable die das Home-Verzeichnis aus dem Systemliest und dein Seperator anhaengt. |
(package private) java.lang.String |
hostname
Der Hostname/Rechnername des Senders wird gespeichert. |
(package private) java.lang.String |
ipnummer
Die IP-Adresse des Senders wird gespeichert. |
(package private) java.io.InputStream |
is
Der InputStream des Clientockets wird auf dem InputStream gesetzt der ein Bytestrom einliest. |
(package private) java.io.InputStreamReader |
isr
Der InputStream kriegt den Bytestrom vom InputStream des Clientsocket, aus dem er dann einen Charakterstrom erzeugt. |
(package private) java.lang.Thread |
meinThread
Ein Thread Objekt kriegt den Aktuellen Thread zugewiesen, notwendig ob mit IsInterrupt den Thread zu stoppen. |
(package private) java.lang.String |
name
Der Dateiname von der zu Sendenen Datei wird gespeichert. |
(package private) java.io.OutputStream |
os
Der Dateistrom wird mittels den OutputStream gleich gesetzt um einen Bytestrom zu schreiben. |
(package private) java.io.OutputStreamWriter |
osr
Der OutputStream wird dann wiederum in diesem OutputStreamWriter verpackt. |
(package private) java.lang.String |
pathname
Stringvariable die den engültigen Pfad enhaelt wo die zu empfangen Datei gespeichert werden. |
(package private) java.lang.String |
puffer
Puffer-String der aus den Dateipfad und den Dateinamen besteht, das File-Objekt bekommt diese Uebergeben. |
(package private) java.util.Scanner |
sc
Scanner-Objekt wird benutzt um die Dateigroesse in Int aus den Charakterstrom zu lesen. |
(package private) java.lang.String |
separator
Stringvariable die den Dateiseperator Symbol des System beinhaltet. |
private static long |
serialVersionUID
Routine Serialisierbarkeits ID. |
(package private) java.io.InputStream |
socketinstr
InputStream der den InputStream vom Clientsocket zugewiesen bekommt. |
(package private) java.io.OutputStream |
socketostr
OutputStream wird auf den OutputStream vom Clientsocket gesetzt. |
(package private) int |
thrnr
Thread-Zaehler, nur Testzwecke |
(package private) java.awt.TrayIcon |
trayIcon
Das TrayIcon Objekt, wird von der Server-Klasse mittels 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 | |
---|---|
ThrServer(java.net.Socket socket,
java.awt.TrayIcon tray,
int c)
Konstruktor der ThrServer-Klasse. |
Method Summary | |
---|---|
void |
run()
Die run()-Methode, die eigentliche Main Methode dieser Klasse. |
(package private) void |
verb_abbruch()
Verbindungsabbruch. |
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 |
---|
private static final long serialVersionUID
java.io.File file
java.io.FileOutputStream fos
java.io.OutputStream os
java.io.InputStream is
java.io.InputStream socketinstr
java.io.InputStreamReader isr
java.io.BufferedReader br
java.io.OutputStream socketostr
java.io.OutputStreamWriter osr
java.io.BufferedWriter bw
java.net.Socket clientSocket
java.lang.String ipnummer
java.lang.String hostname
java.lang.String benutzer
java.lang.String name
boolean check
boolean erfolg
java.awt.TrayIcon trayIcon
java.util.Scanner sc
javax.swing.JProgressBar bar
java.lang.String separator
java.lang.String eigenerbenutzer
java.lang.String puffer
java.lang.String home
java.lang.String pathname
java.lang.String dateiname
java.lang.Thread meinThread
int thrnr
long dateigroesse
int groessse
Constructor Detail |
---|
public ThrServer(java.net.Socket socket, java.awt.TrayIcon tray, int c)
bekommt das TrayIcon von der Server Klasse uebergeben, setzt groesse und Position des JFrames fest, Layout wird bestimmt, TrayIcon wird der lokalen Kopie zugewiesen und die JProgressBar wird eingesetzt. Clientsocket wird der lokalen Kopie zugewiesen.
Weitere Informationen sind in der Beschreibung der run()-Methode zulesen.
socket
- Clientsocket von der Server Klassetray
- TrayIcon von der ByteTaxi Klassec
- Integer-Variable als Zaehler der insgesamt erstellten Threads.Method Detail |
---|
void verb_abbruch()
Eine Funktion, die fuer den Verbindungsabbruch sorgt. Ein "false" wird mittels den BufferedWriter geschrieben, falls der Dateiempfang verweigert wurde, und die Funktion bei Verweigern aufgerufen wird. Allgemein wird dann der clientSocket geschlossen.
public void run()
Die run()-Methode wird ausgefuert, sobald eine Instanz von ThrServer erstellt wird. Wenn eine neue Instanz von ThrServer, also ein Thread gestartet wurde, ist auch eine Verbindung eingegangen die dann dem neu startenden Thread mittels Socketuebergabe Parameter zugeweist wird. Es koennen mehrere Threads der ThrServer parallel gestartet werden. Als Erstes werden Client/Sender (Host der eingehenden Verbindung) Informationen ausgelesen und ausgegeben. Mittels den InputStream werden Informationen ueber die Datei, der Dateiname, die Dateigroesse und der Benutzername des Senders eingelesen. Diese werden mittels OutputStreams vom der Clientklasse gesendet. Der Benutzer (Empfaenger) erhaelt mittels JOptionPane ein Auswahlfenster mit den ganzen empfangenen Information und hat zu entscheiden, ob er den Dateiempfang zustimmt oder nicht (nur zwei Auswahlmoeglichkeiten). Verweigert er den Empfang, wird der Thread mittels der Funktion interrupt() gestoppt. Wenn der Dateiempfang zugestimmt wird, wird mittels den eingelesenen Dateinamen und den vorher festgelegten Pfad ein neues File-Objekt erstellt. Falls jedoch der Dateiname schon existiert, wird mit einem Hinweis und einer Eingabeaufforderung nach einem alternativen Dateinamen gefragt. Von dem InputStream, der einen Bytestrom einliest, werden durch dem OutputStream, der auf einen FileOutputStream gesetzt wird, die empfangenen Bytes in dem neu erstellten File-Objekt geschrieben. Bei Abbruch oder vollstaendiger Uebertragung wird dies mit einem entsprechenden Ballon-Tip in der Taskleiste angezeigt. War die Uebertragung nicht erfolgreich, wird der FileOutputStream geschlossen und die neu angelegte Datei mit den bis dahin empfangenen Bytes wird geloescht, um bei einem erneuten Dateiempfangsversuch keine Komplikationen zu haben. Ein Verbindungsabbruch wird mittels entsprechender Exception gefangen und im Terminal, sowie in der Taskleister als Ballon-Tip angezeigt.
run
in interface java.lang.Runnable
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |