DEC TCP/IP Services for VMS Programming

*HyperReader

  CONTENTS

  Title Page

  Copyright Page

  Preface

  1      Interprocess Communications Concepts

  1.1     Client-Server Model

  1.2     Ports
    1.2.1      Privileged Port Numbers
    1.2.2      Binding Ports
    1.2.3      Assigning Ports

  1.3     Sockets and Device-Sockets
    1.3.1      Communication Domains
    1.3.2      Protocol Types
    1.3.3      Internet Protocols

  1.4     Socket Communications
    1.4.1      Connection-Oriented Sockets
    1.4.2      Connectionless Sockets

  1.5     Deleting Sockets

  2      Writing Internet Applications

  2.1     Overview
    2.1.1      Network Byte Order

  2.2     Creating a Device-Socket
    2.2.1      Creating an Internet Pseudodevice
    2.2.2      Creating a Local Socket

  2.3     Binding a Socket
    2.3.1      Using the Berkeley Internet Name Domain Resolver

  2.4     Setting Up a Socket to Listen for Requests

  2.5     Sending a Connection Request (Client)

  2.6     Sending a Communication Request Using UDP/IP

  2.7     Accepting a Connection Request (Server)

  2.8     Obtaining Device-Socket Information

  2.9     Transferring Data
    2.9.1      Reading Data
      2.9.1.1      Reading Out-of-Band Data (TCP/IP Only)
      2.9.1.2      Peeking at Queued Messages
    2.9.2      Writing Data
      2.9.2.1      Writing Out-of-Band Data (TCP/IP)
      2.9.2.2      Writing Data and Broadcast Messages (UDP/IP)

  2.10    Deleting a Socket

  2.11    Deleting an Internet Pseudodevice

  2.12    Canceling I/O Operations

  3      Using $QIO System Services

  3.1     Overview

  3.2     Device- and Function-Independent $QIO Arguments

  3.3     Function-Dependent $QIO Arguments
    3.3.1      Symbol Definition Macros
    3.3.2      UCX Item Lists and UCX Descriptors
    3.3.3      Specifying an Input Parameter List For Data
    3.3.4      Specifying an Output List For Data
    3.3.5      Specifying the Socket Name
    3.3.6      Specifying the Socket Options, Protocol Options, and I/O Control (IOCTL) Parameters

  4      VMS System Services

  $ASSIGN

  $CANCEL

  $DASSGN

  $GETDVI

  $QIO

  Internet I/O Function Codes

  IO$_ACCESS

  IO$_ACPCONTROL

  IO$_DEACCESS

  IO$_READVBLK

  IO$_SENSEMODE/CHARACTERISTICS

  IO$_SETMODE/CHARACTERISTICS

  IO$_WRITEVBLK

  A   DEC TCP/IP Programming For The Auxiliary Server

  B   UDP/IP Programming Examples For The Auxiliary Server

  C   DEC C Socket Communications

  D   Error Codes

  E   DEC C Socket Routine Reference

  E.1     Porting Considerations
    E.1.1      Calling an IPC Routine from an AST State
    E.1.2      Calling from KERNEL or EXEC Modes
    E.1.3      Standard I/O
    E.1.4      Event Flags
    E.1.5      Suppressing DEC C Compilation Warnings
    E.1.6      Header Files

  E.2     Linking an Internet Application Program

  E.3     DEC C Structures
    E.3.1      hostent Structure
    E.3.2      in_addr Structure
    E.3.3      iovec Structure
    E.3.4      linger Structure
    E.3.5      msghdr Structure
    E.3.6      netent Structure
    E.3.7      sockaddr Structure
    E.3.8      sockaddr_in Structure
    E.3.9      timeval Structure

  E.4     Internet Protocols
    E.4.1      TCP Sockets
    E.4.2      UDP Sockets

  E.5     errno Values

  E.6     Basic Communication Routines

  accept

  bind

  close

  connect

  listen

  read

  recv

  recvfrom

  recvmsg

  select

  send

  sendmsg

  sendto

  shutdown

  socket

  write

  E.7     Auxiliary Communication Routines

  getpeername

  getsockname

  getsockopt

  setsockopt

  E.8     Communication Support Routines

  gethostbyaddr

  gethostbyname

  gethostname

  getnetbyaddr

  getnetbyname

  getnetent

  getprotobyname

  getprotobynumber

  getprotoent

  getservbyname

  getservbyport

  htonl

  htons

  inet_addr

  inet_lnaof

  inet_makeaddr

  inet_netof

  inet_network

  inet_ntoa

  ntohl

  ntohs

  vaxc$get_sdc

  EXAMPLES

  3-1        Specifying IOCTL Parameters

  4-1        $ASSIGN Service MACRO-32 Programming Example

  4-2        $ASSIGN System Service C Programming Example

  4-3        $CANCEL System Service MACRO-32 Programming Example

  4-4        $CANCEL System Service C Programming Example

  4-5        $DASSGN System Service MACRO-32 Programming Example

  4-6        $DASSGN System Service C Programming Example

  4-7        IO$_ACPCONTROL MACRO-32 Programming Example

  4-8        IO$_ACPCONTROL System Service C Programming Example

  4-10       IO$_READVBLK Function MACRO-32 Programming Example

  4-10       IO$_READVBLK Function MACRO-32 Programming Example

  4-11       IO$_READVBLK Function C Programming Example

  4-12       IO$_READVBLK Function C Programming Example

  4-13       IO$_SETMODE Function MACRO-32 Programming Example

  4-14       IO$_SETMODE Function C Programming Example

  4-15       IO$_WRITEVBLK Function MACRO-32 Programming Example

  4-16       IO$_WRITEVBLK Function (Vectored) C Programming Example

  4-17       IO$_WRITEVBLK Function C Programming Example

  A-1        Server TCP/IP MACRO-32 Programming Example

  A-2        Server TCP/IP C Programming Example

  A-3        Client TCP/IP MACRO-32 Programming Example

  A-4        Client TCP/IP C Programming Example

  B-1        Read UDP/IP MACRO-32 Example

  B-2        Read UDP/IP C Programming Example

  B-3        Write UDP/IP MACRO-32 Programming Example

  B-4        Write UDP/IP C Programming Example

  C-1        TCP/IP Server

  C-2        TCP/IP Server with Auxiliary Server

  C-3        TCP/IP Client

  C-4        UDP/IP Server

  C-5        UDP/IP Server with Auxiliary Server

  C-6        UDP/IP Client

  FIGURES

  1-1        Client-Server Model

  1-2        Port Number Ranges

  1-3        Device-Socket

  2-1        Communication Between the Local Host and a Remote Host

  3-1        I/O Status Block

  3-2        Specifying an Input Parameter List

  3-3        Specifying the Local or Remote Socket Name

  3-4        Specifying Socket Options

  3-5        Specifying IOCTL Functions

  3-6        Getting Socket Options

  3-7        Getting IOCTL Parameters

  4-1        Single Item Descriptor

  4-2        I/O Status Block

  TABLES

  2-1        Calling Sequence for Application Programs

  3-1        $QIO System Service Calls

  3-2        Function-Dependent $QIO Arguments

  3-3        Internet Symbol Definition Files

  4-1        Symbolic Names for $GETDVI

  4-2        Device Unit Status Symbolic Names

  4-3        Internet I/O Function Codes

  4-4        Symbol Definition Macros

  4-5        Valid INET Subfunction Codes

  4-6        Valid Flags for the p4 Argument

  4-7        The p6 Socket Options

  4-8        TCP/IP Options

  4-9        IOCTL Commands

  4-10       Valid Protocols for IO$_SETMODE and IO$_SETCHAR

  4-11       Valid Socket Types for IO$_SETMODE and IO$_SETCHAR

  4-12       Communications Socket Options

  4-13       TCP/IP Options

  4-14       Valid WRITE Flags for the p4 Argument

  A-1        Calling Sequence for Application Programs (TCP/IP)

  B-1        Calling Sequence for Application Programs (UDP/IP)

  D-1        Translation of Socket Error Codes to VMS Error Codes

  E-1        errno Values

  E-2        Basic Communication Routines

  E-3        Auxiliary Communication Routines

  E-4        Communications Socket Options

  E-5        TCP/IP Options

  E-6        Supported Communication Routines