de.a_weinert.apps
Class PCon

java.lang.Object
  extended by de.frame4j.util.App
      extended by de.a_weinert.apps.PCon
All Implemented Interfaces:
AttrSettable, TextHelper.MessageComponents, UIInfo, ActionListener, EventListener, DynamicMBean

public class PCon
extends App

Prüfen, ob ein PC (ein Rechner mit IP-Adresse) "lebt".

Diese Anwendung prüft, ob der als Parameter angegebene PC existiert und eingeschaltet, sprich via TCP erreichbar, ist. Zweck der Anwendung ist eine Abfragemöglichkeit vor Operationen mit einem Rechner, welche bei dessen Unerreichbarkeit (Aus) auf unvorhersagbare Weise oder erst nach störend langen Wartezeiten abbrechen. Bereits ein einfaches DIR auf eine Freigabe zeigt solch ein u.U. störendes Verhalten.

Das Ergebnis wird über den Exit-Kode signalisiert:

Wert Bedeutung
0 ans port An   und antwortet auf angegebenem Port (optionaler Test mit sendMess und socketTimeout)
1 on port An   und lässt socket-Verbindung zu angegebenem Port port zu
3 port rej An,   aber verweigert Verbindung mit angegebenem Port port
6,7 sock err Aus bzw. TCP-IP-Probleme
8 no conn Aus, keine Verbindung oder Ablehnung (innerhalb connectTimeout ms)
10 no list angegebener PC pcName ist nicht in Liste computerList (optionaler Test)
12 no IP angegebener Rechner (pcName) wird nicht erkannt (DNS)
34 praram error Falsche Parameter bei Aufruf.
36 list error Computerliste computerList angegeben, aber nicht lesbar.
> 90 problems Die Anwendung hat Aufruf- / Startprobleme.

Bei Exit-Codes (Errorlevel) unterhalb 5 ist der angegebenen Rechner als eingeschaltet zu betrachten.
Beispiel 1 (Wenn an, liefere eine neue Version des Frameworks):
    java de.a_weinert.apps.PCon PD348S -v
    if NOT ERRORLEVEL 5 XCOPY aWeinertBib.jar \\PD348S\programme\jdk\jre\lib\ext
  
Beispiel 2 (Wenn an und in Liste, schalte aus):
    java de.a_weinert.apps.PCon -computers cList.txt  PD348S -v
    if NOT ERRORLEVEL 5 SHUTDOWN /s /m PD348S
Hinweis 1: Mit sendMess kann diese Anwendung auch einer (Server-) Anwendung eine (Log-) Nachricht zu senden, und dessen (eine) Antwort wiederzugeben.

Hinweis 2: Zu dieser Anwendung gehört (als integraler) Bestandteil eine Properties-Datei namens PCon.properties. Sie gehört (am besten) in dasselbe .jar-File wie diese Anwendung.
Diese Datei PCon.properties ist auch Teil der Dokumentation.


© Copyright 1999, 2005   Albrecht Weinert

Version:
15 (21.05.2010)
Author:
Albrecht Weinert
See Also:
de.frame4j.net, App, AppBase

Field Summary
 String computerList
          Liste erlaubter Computer.
 int connectTimeout
          Verbindungs-Timeout (ms).
protected  String hostAddress
          Die Internetadresse des PC (als String).
protected  InetAddress inetAddress
          Die Internetadresse des PC.
 String pcName
          Rechnername.
 int port
          Port.
 String sendMess
          Sendezeichenkette.
protected  Socket so
          Der Socket für der Echo-Port 7 .
 int socketTimeout
          IO-Timeout (ms).
 
Fields inherited from class de.frame4j.util.App
ano, appBase, appIO, appStartTime, args, bgColor, err, fullClassName, help, icon, INIT_ERROR, jmxRemoteNote, JOB_DONE_OK, log, LOG_OUT_ERROR, MAIN_THREAD_EXC, mainThread, myClass, myFrame, name, NO_PARS_ERROR, objectName, out, outMode, packName, prop, retCode, runFlag, shortClassName, title, verbose, verbosity
 
Fields inherited from interface de.frame4j.net.AttrSettable
ILLEGAL_TYPE, ILLEGAL_VALUE, NO_ATTRIBUTE, NO_KNOWN_ATTRIBUTE, NO_VALUE, OK
 
Constructor Summary
PCon()
           
 
Method Summary
 int doIt()
          Arbeitsmethode von PCon.
static void main(String[] args)
          Startmethode von PCon.
 
Methods inherited from class de.frame4j.util.App
actionPerformed, allowNoPropertiesFile, clientOrder, condHelpLog, connect, errMeld, errMeld, errorExit, errorExit, errorExit, errorText, formMessage, formMessage, getAbout, getAboutText, getActTime, getAppLogger, getAppStartTime, getArgs, getAttribute, getAttributes, getAuthor, getCopyright, getDbLogger, getExecTimeMs, getExecTimeString, getHelp, getHelpText, getIcon, getLanguage, getLogHandler, getMBeanInfo, getMessageComponent, getMessageComponentsLength, getMyFrame, getName, getNameWithVersDate, getOutMode, getProp, getPurpose, getStartTime, getStateString, getTitle, getUsage, getVerbosity, getVerbosityString, getVersDate, getXMLinput, go, go, go, haveIcon, invoke, isDebug, isHelp, isHelpLog, isNormal, isRunFlag, isSilent, isTest, isVerbose, logVerbose, logVerbose, makeDbLogger, makeMenuBar, makeMenuBar, makeStatusTextEnd, makeStatusTextStart, messageFormat, normalExit, parsePartial, performeAction, postDeregister, postRegister, preRegister, queueAction, registerAsMBean, setAboutText, setAttribute, setAttribute, setAttribute, setAttributes, setAuthor, setBgColor, setCodePages, setCopyright, setHelp, setJmxRemoteNote, setLogOut2, setName, setOutMode, setOutMode, setPurpose, setTitle, setUsage, setVerbose, setVerbose, setVerbosity, setVerbosity, setVerbosityString, setVersDate, stop, threeLineEndMsg, toString, twoLineEndMsg, twoLineStartMsg, valueLang, valueLang, wakeMainThread
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

pcName

public String pcName
Rechnername.

Der Name des Rechners, der (im DNS) und ggf. in der Liste computerList gesucht und auf seinen Einschaltzustand (IP-Verbindungsverhalten) geprüft wird.

Zwei führende Gegenschrägstriche, wie sie für Windowsfreigabenamen vor Rechnernamen gesetzt werden, werden ggf. entfernt.

default: null (illegal; muss als Startparameter geliefert werden.)


port

public int port
Port.

erlaubt: 1 .. 65000
default: 7 (Echo-Port)


connectTimeout

public int connectTimeout
Verbindungs-Timeout (ms).

erlaubt: 500..59000 (ms)
default: 1230 (1,2s)


socketTimeout

public int socketTimeout
IO-Timeout (ms).

Socket-Time-Out zum Schreiben und Lesen. Wirkt nur, falls eine erfolgreich erstellte Port-Verbindung auch (testhalber) ausprobiert wird.
erlaubt: 500..59000 (ms)
default: 1230 (1,2s)


sendMess

public String sendMess
Sendezeichenkette.

Wird ggf. zum Port gesendet und es wird dann (genau) eine Antwort erwartet.

default: null (oder leer); kein testhalber Senden und Empfangen.


computerList

public String computerList
Liste erlaubter Computer.

computerList ist ggf. der Dateiname einer Liste von erlaubten Computern. Ist diese Liste gegeben, wird für den PC pcName geprüft ob es einen Rechner s dieses Namens (im DNS) gibt.

Gibt es ihn nicht, endet die Anwendung mit return-Code 12.

Gibt es die Datei computerList, so wird pcName anschließend darin gesucht. Wird er nicht gefunden, so endet die Anwendung ohne weitere Verbindungsversuche mit return-Code 10.

Computernamen können in der mit computerList bezeichneten Datei oder URL beliebig angeordnet sein. G/K-Schreibung spielt keine Rolle. Die Computernamen dürfen keine Wiederholungen ihres Anfangs enthalten (halt nix wie "OttoOtto55", was es halbwegs vernünftigen Computer-Namenskonventionen auch nicht geben sollte.

default: null (kein zusätzliches Listenkriterium

See Also:
TextHelper.indexOfOpt(CharSequence, CharSequence, int, boolean)

hostAddress

protected String hostAddress
Die Internetadresse des PC (als String).


inetAddress

protected InetAddress inetAddress
Die Internetadresse des PC.


so

protected Socket so
Der Socket für der Echo-Port 7 .
Falls dieser PC den Echo-Dienst bietet ist so gesetzt, sonst null.

Constructor Detail

PCon

public PCon()
Method Detail

main

public static void main(String[] args)
Startmethode von PCon.

Der Aufruf ist: Java PCon [optionen] PC [port]

Die Anwendung wird mit Exit-Code <:= 5 beendet, falls der angegebenen Rechner an (sprich erreichbar) ist.

Parameters:
args - Kommandozeilenparameter
See Also:
doIt(), App.go(java.lang.String[], java.lang.String, boolean, java.lang.CharSequence)

doIt

public int doIt()
Arbeitsmethode von PCon.

Wird von main() via App.go() aufgerufen.

Specified by:
doIt in class App
See Also:
main(Strin[]), App.go(java.lang.String[], java.lang.String, boolean, java.lang.CharSequence)