*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> t_snd (3n)              
Title
Content
Arch
Section
 

Contents


t_snd(3N)							     t_snd(3N)


NAME    [Toc]    [Back]

     t_snd - send data or expedited data over a	connection

SYNOPSIS    [Toc]    [Back]

     #ifdef _XOPEN_SOURCE
     #include <xti.h>
     #else
     #include <tiuser.h>
     #endif

     int t_snd (int fd,	char *buf, unsigned nbytes, int	flags);

DESCRIPTION    [Toc]    [Back]

     This function is used to send either normal or expedited data.  fd
     identifies	the local transport endpoint over which	data should be sent,
     buf points	to the user data, nbytes specifies the number of bytes of user
     data to be	sent, and flags	specifies any optional flags described below.

     By	default, t_snd operates	in synchronous mode and	may wait if flow
     control restrictions prevent the data from	being accepted by the local
     transport provider	at the time the	call is	made.  However,	if O_NDELAY or
     O_NONBLOCK	is set (via t_open or fcntl), t_snd will execute in
     asynchronous mode,	and will fail immediately if there are flow control
     restrictions.

     Even when there are no flow control restrictions, t_snd will wait if
     STREAMS internal resources	are not	available, regardless of the state of
     O_NDELAY or O_NONBLOCK.

     On	successful completion, t_snd returns the number	of bytes accepted by
     the transport provider.  Normally this will equal the number of bytes
     specified in nbytes.  However, if O_NDELAY	or O_NONBLOCK is set, it is
     possible that only	part of	the data will be accepted by the transport
     provider.	In this	case, t_snd will set T_MORE for	the data that was sent
     (see below) and will return a value less than nbytes.  If nbytes is zero
     and sending of zero bytes is not supported	by the underlying transport
     provider, t_snd() will return -1 with t_errno set to TBADDATA.  A return
     value of zero indicates that the request to send a	zero-length data
     message was sent to the provider.

     If	T_EXPEDITED is set in flags, the data will be sent as expedited	data,
     and will be subject to the	interpretations	of the transport provider.

     If	T_MORE is set in flags,	or is set as described above, an indication is
     sent to the transport provider that the transport service data unit
     (TSDU) or expedited transport service data	unit (ETSDU) is	being sent
     through multiple t_snd calls.  Each t_snd with the	T_MORE flag set
     indicates that another t_snd will follow with more	data for the current
     TSDU.  The	end of the TSDU	(or ETSDU) is identified by a t_snd call with
     the T_MORE	flag not set.  Use of T_MORE enables a user to break up	large
     logical data units	without	losing the boundaries of those units at	the
     other end of the connection.  The flag implies nothing about how the data



									Page 1






t_snd(3N)							     t_snd(3N)



     is	packaged for transfer below the	transport interface.  If the transport
     provider does not support the concept of a	TSDU as	indicated in the info
     argument on return	from t_open or t_getinfo, the T_MORE flag is not
     meaningful	and should be ignored.

     The size of each TSDU or ETSDU must not exceed the	limits of the
     transport provider	as returned by t_open or t_getinfo.  If	the size is
     exceeded, a TSYSERR with system error EPROTO will occur.  However,	the
     t_snd may not fail	because	EPROTO errors may not be reported immediately.
     In	this case, a subsequent	call that accesses the transport endpoint will
     fail with the associated TSYSERR.

     If	t_snd is issued	from the T_IDLE	state, the provider may	silently
     discard the data.	If t_snd is issued from	any state other	than
     T_DATAXFER, T_INREL or T_IDLE, the	provider will generate a TSYSERR with
     system error EPROTO (which	may be reported	in the manner described
     above).

     This function resides within both the X/Open compliant libxnet and	the
     SVR4 compliant libnsl Network Services libraries.	Network	Services
     applications which	require	X/Open compliance must link-load with -lxnet.
     Network Services applications which require SVR4 compliance must linkload
 with -lnsl.

     On	failure, t_errno may be	set to one of the following:

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

     TFLOW		 O_NDELAY or O_NONBLOCK	was set, but the flow control
			 mechanism prevented the transport provider from
			 accepting data	at this	time.

     TNOTSUPPORT	 This function is not supported	by the underlying
			 transport provider.

     TSYSERR		 A system error	[see intro(2)] has been	detected
			 during	execution of this function.

     TBADDATA		 There are multiple conditions which could cause this
			 t_errno to be generated.  One condition is:  nbytes
			 is zero and sending zero bytes	is not supported by
			 the transport provider.  Another condition is:	if
			 _XOPEN_SOURCE is defined and a	single send was
			 attempted specifying a	TSDU greater than that
			 specified by the current values of the	TSDU field in
			 the info argument.

     TOUTSTATE		 If _XOPEN_SOURCE is defined and t_snd() is issued in
			 the wrong sequence on the transport endpoint
			 referenced by fd, the TOUTSTATE error value is
			 returned within the variable t_errno.



									Page 2






t_snd(3N)							     t_snd(3N)


NOTES    [Toc]    [Back]

     The t_snd routine does not	look for a disconnect indication (showing that
     the connection was	broken)	before passing data to the provider.

SEE ALSO    [Toc]    [Back]

      
      
     t_open(3N), t_rcv(3N)

DIAGNOSTICS    [Toc]    [Back]

     On	successful completion, t_snd returns the number	of bytes accepted by
     the transport provider, and it returns -1 on failure and t_errno is set
     to	indicate the error.


									PPPPaaaaggggeeee 3333
[ Back ]
 Similar pages
Name OS Title
t_snd Tru64 Send normal data or expedited data over a connection
t_rcv Tru64 Receive normal data or expedited data on a connection
t_sndv Tru64 Receive data or expedited data sent over a connection
t_rcv HP-UX receive data or expedited data sent over a connection
t_rcv IRIX receive data or expedited data sent over a connection
t_rcvv Tru64 Receive data or expedited data sent over a connection
t_rcvvudata Tru64 Receive data or expedited data sent over a
mdSend IRIX send out MIDI data
t_sndudata IRIX send a data unit
t_sndudata HP-UX send a data unit
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service