Front page | perl.vmsperl |
Postings from May 2002
From: Donald Plugge
May 1, 2002 10:17
Message ID: 00ba01c1f134$c8c60aa0$58e2289c@NIH.GOV
I'm doing some cross platform socket communications between MacPerl and VMSPerl. Briefly, I run a script on the mac that sends an REXEC command to the VMS system. The VMS command file check for the server process which run a perl server using socket.pm and select.pm. If the server is non-existent, then the REXEC command runs a detached process to create it. I have to setup a delay to give the server time to startup. After that all is well. The two systems talk back and forth using "accept" and "recv" methods.
If the server is already running the command process skips to the perl socket interface. If not, it startups the server, then proceeds.
One trouble I'm having is related to the port timeout period. If I have the client close its connection, then a new connection is no problem because the server is still running. However, if the client shuts down the server, then attempts to start it up right away, I get a error:
"Could not establish server: IO::Socket:INET: address already in use"
Obviously, the socket hasn't timed out. However, I don't know where I can set that timeout period. Is that a setting in my TCP/IP Services interface on the VMS side or is it related to the select->can_read(timeout) in the server script?
In general, how can a view stats on the server port (in this case 2323)? I've tried
TCPIP> show service
TCPIP> show device_socket/port=2323
to no avail. Any suggestions would be appreciated, as I have a nifty little communications routine with only minor problems.
Donald G Plugge
PS By the way, the MacPerl interface into the Mac GUI is really impressive. The MacWindow and MacDialog make a nice interface into the VMS server (which has no real satisfactory GUI packages built-in). But using the VMS as a server, a GUI is really unnecessary.
by Donald Plugge