MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Networking Services Library Functions                 trcv(3NSL)



NAME
     trcv - receive data or expedited data sent over  a  connec-
     tion

SYNOPSIS
     #include 

     int trcv(int fd, void *buf, unsigned int nbytes, int *flags);


DESCRIPTION
     This function is part of the XTI  interfaces  which  evolved
     from the TLI interfaces. XTI represents the future evolution
     of these interfaces. However, TLI interfaces  are  supported
     for  compatibility.  When  using a TLI function that has the
     same name as an XTI function, the  tiuser.h header file must
     be  used.   Refer  to  the   TLI COMPATIBILITY section for a
     description of differences between the two interfaces.


     This function receives either normal or expedited data.  The
     argument  fd identifies the local transport endpoint through
     which data will arrive, buf points to a receive buffer where
     user  data  will be placed, and nbytes specifies the size of
     the receive buffer. The argument flags may be set on  return
     from  trcv()  and  specifies  optional  flags  as described
     below.


     By default, trcv() operates in synchronous  mode  and  will
     wait for data to arrive if none is currently available. How-
     ever, if ONONBLOCK is  set  by  means  of  topen(3NSL)  or
     fcntl(2), trcv() will execute in asynchronous mode and will
     fail if no data is available. See TNODATA below.


     On return from the call, if  TMORE is set  in  flags,  this
     indicates that there is more data, and the current transport
     service data unit (TSDU) or expedited transport service data
     unit  (ETSDU) must be received in multiple trcv() calls. In
     the asynchronous mode,  or  under  unusual  conditions  (for
     example,  the  arrival of a signal or  TEXDATA event),  the
     TMORE flag may be set on return from the trcv() call  even
     when  the  number of bytes received is less than the size of
     the receive buffer specified. Each trcv() with the   TMORE
     flag  set  indicates that another trcv() must follow to get
     more data for the current TSDU. The end of the TSDU is iden-
     tified by the return of a trcv() call with the  TMORE flag
     not set. If the transport provider does not support the con-
     cept  of  a TSDU as indicated in the info argument on return
     from topen(3NSL) or tgetinfo(3NSL), the   TMORE  flag  is
     not  meaningful and should be ignored.  If nbytes is greater



SunOS 5.11          Last change: 24 Aug 2007                    1






Networking Services Library Functions                 trcv(3NSL)



     than zero on the call to trcv(),  trcv()  will  return   0
     only if the end of a TSDU is being returned to the user.


     On return, the data is expedited if  TEXPEDITED is  set  in
     flags.  If  TMORE is also set, it indicates that the number
     of expedited bytes exceeded nbytes, a signal has interrupted
     the   call,  or that an entire ETSDU was not available (only
     for  transport  protocols  that  support  fragmentation   of
     ETSDUs).   The  rest of the ETSDU will be returned by subse-
     quent calls to   trcv() which will return with  TEXPEDITED
     set  in  flags.  The  end  of the ETSDU is identified by the
     return of a  trcv() call with  TEXPEDITED set and   TMORE
     cleared.   If the entire ETSDU is not available it is possi-
     ble for normal data fragments to  be  returned  between  the
     initial and final fragments of an ETSDU.


     If a signal arrives, trcv() returns, giving  the  user  any
     data currently available.  If no data is available,  trcv()
     returns  -1, sets  terrno to TSYSER and  errno  to  EINTR.
     If  some  data  is available,  trcv() returns the number of
     bytes received and  TMORE is set in flags.


     In synchronous mode, the only way for the user to  be  noti-
     fied  of the arrival of normal or expedited data is to issue
     this function or check for the  TDATA or   TEXDATA  events
     using  the tlook(3NSL) function.  Additionally, the process
     can arrange to be notified by means of the EM interface.

RETURN VALUES
     On successful completion,  trcv()  returns  the  number  of
     bytes  received.  Otherwise,  it  returns  -1 on failure and
     terrno is set to indicate the error.

VALID STATES
     TDATAXFER, TOUTREL.

ERORS
     On failure, terrno is set to one of the following:

     TBADF          The specified file descriptor does not  refer
                    to a transport endpoint.


     TLOK          An asynchronous event has  occurred  on  this
                    transport  endpoint  and  requires  immediate
                    attention.






SunOS 5.11          Last change: 24 Aug 2007                    2






Networking Services Library Functions                 trcv(3NSL)



     TNODATA        ONONBLOCK was set, but no data is  currently
                    available from the transport provider.


     TNOTSUPORT    This function is not supported by the  under-
                    lying transport provider.


     TOUTSTATE      The communications endpoint referenced by  fd
                    is  not  in one of the states in which a call
                    to this function is valid.


     TPROTO         This error  indicates  that  a  communication
                    problem has been detected between XTI and the
                    transport provider  for  which  there  is  no
                    other suitable XTI error (terrno).


     TSYSER        A system error has occurred during  execution
                    of this function.


TLI COMPATIBILITY
     The XTI and TLI interface definitions have common names  but
     use different header files. This, and other semantic differ-
     ences between the two interfaces are described in  the  sub-
     sections below.

  Interface Header
     The XTI interfaces use the header file,  xti.h.  TLI  inter-
     faces  should  not  use  this  header.   They should use the
     header:
       #include 

  Error Description Values
     The terrno value that can be set by the XTI  interface  and
     cannot be set by the TLI interface is:
       TPROTO

ATRIBUTES
     See attributes(5)  for descriptions of the following  attri-
     butes:












SunOS 5.11          Last change: 24 Aug 2007                    3






Networking Services Library Functions                 trcv(3NSL)



     
           ATRIBUTE TYPE               ATRIBUTE VALUE       
    
     Interface Stability          Committed                   
    
     MT-Level                     Safe                        
    
     Standard                     See standards(5).           
    


SEE ALSO
     fcntl(2),   tgetinfo(3NSL),   tlook(3NSL),   topen(3NSL),
     tsnd(3NSL), attributes(5), standards(5)









































SunOS 5.11          Last change: 24 Aug 2007                    4



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™