java.lang.Object
java.lang.Thread
com.act365.net.echo.EchoServer
- All Implemented Interfaces:
- java.lang.Runnable
- public class EchoServer
- extends java.lang.Thread
EchoServer acts as the server for the TCP echo service.
Usage: EchoServer -p protocol -l localhost localport.
NB When a TCPJ protocol has been chosen, the server will be created with a
backlog of 1 (as against the standard Berkeley value of 5) because of a limitation
in the current TCPJ implementation.
-p protocol (optional) defines the socket protocol to be used.
By default, the JDK TCP implementation will be used. The alternatives are
TCPJ, RawTCP or RawTCPJ. (NB The RawTCP protocol will behave identically to TCP
because no DatagramSocket objects will be instantiated. However, a
DatagramSocket is always used by TCPJ, so the behaviour of TCPJ
and RawTCPJ will differ).
-l localhost (optional) should be specified if the protocol
has been set to RawTCPJ. The information will be used to construct the IP header.
localport is the port to be used by the echo server.
| Nested classes inherited from class java.lang.Thread |
java.lang.Thread.UncaughtExceptionHandler |
|
Method Summary |
protected void |
finalize()
Called on an object by the Virtual Machine at most once,
at some point after the Object is determined unreachable
but before it is destroyed. |
static void |
main(java.lang.String[] args)
|
void |
run()
The method of Thread that will be run if there is no Runnable object
associated with the Thread. |
| Methods inherited from class java.lang.Thread |
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield |
server
java.net.ServerSocket server
EchoServer
EchoServer(int port,
java.net.InetAddress localaddr)
main
public static void main(java.lang.String[] args)
run
public void run()
- Description copied from class:
java.lang.Thread
- The method of Thread that will be run if there is no Runnable object
associated with the Thread. Thread's implementation does nothing at all.
finalize
protected void finalize()
- Description copied from class:
java.lang.Object
- Called on an object by the Virtual Machine at most once,
at some point after the Object is determined unreachable
but before it is destroyed. You would think that this
means it eventually is called on every Object, but this is
not necessarily the case. If execution terminates
abnormally, garbage collection does not always happen.
Thus you cannot rely on this method to always work.
For finer control over garbage collection, use references
from the
java.lang.ref package.
Virtual Machines are free to not call this method if
they can determine that it does nothing important; for
example, if your class extends Object and overrides
finalize to do simply super.finalize().
finalize() will be called by a java.lang.Thread that has no
locks on any Objects, and may be called concurrently.
There are no guarantees on the order in which multiple
objects are finalized. This means that finalize() is
usually unsuited for performing actions that must be
thread-safe, and that your implementation must be
use defensive programming if it is to always work.
If an Exception is thrown from finalize() during garbage
collection, it will be patently ignored and the Object will
still be destroyed.
It is allowed, although not typical, for user code to call
finalize() directly. User invocation does not affect whether
automatic invocation will occur. It is also permitted,
although not recommended, for a finalize() method to "revive"
an object by making it reachable from normal code again.
Unlike constructors, finalize() does not get called
for an object's superclass unless the implementation
specifically calls super.finalize().
The default implementation does nothing.