![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
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.
|