Converting to using TCP/IP (sockets)

Converting to using TCP/IP (sockets)

Post by Costel » Thu, 23 Apr 1992 02:05:25

    I have always had great success in getting my Unix questions
answered by all you Unix gurus. I appreciate that. Thanks.

    The following question is a bit off the beaten path of Unix, but
I figured probably a lot of you also have VAX/VMS experience.

    I am writing to see if anyone has had experience in converting
a program from DECnet to TCP/IP? That is, currently our network uses
DECnet and so the (Ada) program makes DECnet calls. We want to change
the network to TCP/IP (maybe Wollongong or DECs - any recommendations?).
So, we will correspondingly need to change the Ada program. My first
task is to come up with an estimate of how much effort (staff months)
would be required to make the conversion to the Ada program.

   I would like to see if anyone out there has done something of this sort
and can tell me what problems they had and what I might expect, eg. is the
design strategy for making DECnet calls so different than the design
strategy for making socket (TCP/IP) calls that it is best to s*the
current IPC packages and start over; or, can I map each DECnet call to
one or more socket (TCP/IP) call(s)?

System configuration: VAX Server 3800 running Security Enhanced VMS.

Please respond to me at:

Thanks for any info you can provide. /Roger


Converting to using TCP/IP (sockets)

Post by Jim Swi » Thu, 23 Apr 1992 04:45:09

I did exactly what you are proposing and I would say that there
are two issues.  First, the mapping of the API from qio to sockets is
straightforward.  I would even argue that (for a task-to-task
application) that the sockets are easier to use.  There are fewer
parameters than the QIOs, and all that baroque setup of the NCB
data structure is not there in the socket interface.

The bigger issue is whether you are using an asynchronous style
of interface or not.   If not, a synchronous translation of a simple
connect/read/write/disconnect type application will be simple, but
if you're doing something in VMS like having ASTs fire whenever a
connection comes in and then multiplexing multiple connections via
async QIOs, then you'll have some work as under Ultrix you don't
have ASTs and you'll have to redesign to have all your asynch I/O
return to a common point in your program where you can build
a simple dispatcher around a select(2) call.   Another option for
doing this kind of thing is to use the inetd daemon process and
have the connections handed off to multiple processes, which is
a resonable unix way of doing things under unix whereas in
VMS you might not

Jim Swist