HP OpenVMS Systems

ask the wizard
Content starts here

IP Sockets, I/O Redirection, and SYS$NET:?

» close window

The Question is:

 
Hi
I have written a server process in Pascal,
which is started through the TCP/IP Auxiliary
Server mechanism.
 
This server process then assigns SYS$INPUT and
SYS$OUTPUT to SYS$NET, and basically has the
following main loop:
 
    WHILE STATUS( input ) = 0 DO BEGIN
        READLN( inBuffer, ERROR := CONTINUE );
        Process_Input( inBuffer );
    END;
 
This normally works very well.
 
However:
I cannot stop this server process using $FORCEX
or STOP /ID, when a connection is active.
If I try to do this, the process goes into
RWAST state. It only goes away when the client
also closes the connection.
 
This is quite nasty, since I first have to find
out where the client is, and make him close the
connection.
 
Is there a way to really kill such a Auxiliary
Server process, which works even if the client
is just hanging around?
 
I have noticed that, if the client is just
plugged out without nicely terminating the
link, it takes about ten minutes, then the
RWAST resolves itself somehow, and the server
really disappears. Can this be influenced
(i.e. speeded up) somehow?
 
Thanks for your help
Christoph
 
 


The Answer is :

 
  The OpenVMS Wizard cannot and does not recommend redirecting output
  from or input to SYS$NET in this fashion -- this particular coding
  technique is problematic at best and is not particularly desirable
  from any application executable nor from a DCL command procedure.
  Among other problems, this technique will cause any application error
  messages and any system or application diagnostics to be redirected.
 
  Please use the documented IP application programming interfaces --
  $qio and $qiow for applications not written in C, and the C socket
  library and $qio and $qiow for applications written in C -- for
  reading and writing IP messages.
 
  Using the asynchronous form of the call ($qio), you can also write
  a network server that uses AST notifications.
 
  Examples of the $qio interface are available in the TCP/IP Services
  documentation.  Examples of socket calls are in TCPIP$EXAMPLES:, and
  in UCX$EXAMPLES: on TCP/IP Services releases prior to V5.0.
 
  The OpenVMS Wizard will assume TCP/IP Services V5.1 with ECO.
 

answer written or last revised on ( 28-AUG-2001 )

» close window