submission.Demo
Class TCPEchoServer

java.lang.Object
  extended byjava.lang.Thread
      extended bysimnet.Application
          extended bysubmission.Demo.EchoServer
              extended bysubmission.Demo.TCPEchoServer
All Implemented Interfaces:
Pluggable, PlugoutListener, java.lang.Runnable, SimnetWindowListener

public class TCPEchoServer
extends EchoServer
implements Pluggable

An example of an EchoServer implemented with UDP. Unlike the UDP example, this echo server only runs on one port at a time.


Nested Class Summary
private  class TCPEchoServer.TCPEchoServerThread
          The thread that does all of the work for an open port.
 
Field Summary
(package private)  int connCount
           
(package private)  int port
           
(package private)  java.util.HashSet sessions
           
(package private)  ServerSocket ssock
           
 
Fields inherited from class submission.Demo.EchoServer
prefix
 
Fields inherited from class simnet.Application
appid, appstart, node, NODE_ID, pid, random, sim
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
TCPEchoServer()
           
 
Method Summary
 void close()
          Close the server.
 void close(int dummy)
          For compatibilty with EchoServer...
 void customInit()
          This is where an application can do any application-specific initializeation it requires.
 void open(int port)
          Opens the server.
 boolean prePlugout(java.lang.Object replacement)
          To cleanup, just clear out the sessions table (the worker threads clean themselves up when sockets close).
 void run()
          Wait for connections, and spawn a thread to deal with them.
 void status()
          Print a status report
 
Methods inherited from class submission.Demo.EchoServer
close, open, setPrefix
 
Methods inherited from class simnet.Application
closeWindow, finalize, getTitleString, initialize, plugoutNotification, printout, printout, processWindowCommand, rawOut, window
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

port

int port

connCount

int connCount

ssock

transient ServerSocket ssock

sessions

transient java.util.HashSet sessions
Constructor Detail

TCPEchoServer

public TCPEchoServer()
Method Detail

customInit

public void customInit()
Description copied from class: Application
This is where an application can do any application-specific initializeation it requires.

Overrides:
customInit in class Application

open

public void open(int port)
Opens the server.

Specified by:
open in class EchoServer

run

public void run()
Wait for connections, and spawn a thread to deal with them.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class Application

close

public void close()
Close the server.


close

public void close(int dummy)
For compatibilty with EchoServer...

Specified by:
close in class EchoServer

status

public void status()
Print a status report

Specified by:
status in class EchoServer

prePlugout

public boolean prePlugout(java.lang.Object replacement)
To cleanup, just clear out the sessions table (the worker threads clean themselves up when sockets close).

Specified by:
prePlugout in interface Pluggable
Returns:
if this object can now be removed (was the operation sucessful)