Kind of textbook socket set-up here...
conn_sockchar.prot = TCPIP$C_TCP;
conn_sockchar.type = TCPIP$C_STREAM;
conn_sockchar.af = TCPIP$C_AF_INET;
struct timeval tmo={15,0}; // 2 second timeout on any I/O
tmo_itemlist.length = sizeof(tmo);
tmo_itemlist.type = TCPIP$C_RCVTIMEO;
tmo_itemlist.address = &tmo;
sockopt_itemlist.length = sizeof(tmo_itemlist);
sockopt_itemlist.type = TCPIP$C_SOCKOPT;
sockopt_itemlist.address = &tmo_itemlist;
// whom are we connecting to?
CLEAR(serv_addr);
serv_addr.sin_family = TCPIP$C_AF_INET;
serv_addr.sin_port = htons(atoi(argv[2])); // second arg is port number
// set up socket type
status = sys$qiow(0, conn_channel, IO$_SETMODE, &iosb, 0, 0, &conn_sockchar, 0, 0, 0, 0, 0 );
EXIT_IF_BAD(status,iosb);
// set up socket timeout
status = sys$qiow(0, conn_channel, IO$_SETMODE, &iosb, 0, 0, 0, 0, 0, 0, &sockopt_itemlist, 0 );
EXIT_IF_BAD(status,iosb);
// connect to remote port
status = sys$qiow(0, conn_channel, IO$_ACCESS, &iosb, 0, 0, 0, 0, &serv_itemlist, 0, 0, 0 );
EXIT_IF_BAD(status,iosb);
// Send the prompt - a CR
status = sys$qiow(0,conn_channel, IO$_WRITEVBLK, &iosb, 0, 0, "\r", 1, 0, 0, 0, 0);
EXIT_IF_BAD(status,iosb);