|
|
Эта страница руководства является частью версии 5.0 Инструментов XCodeПолучить эти инструменты:
Если Вы выполняете версию Инструментов XCode кроме 5,0, просматриваете документацию локально:
Читать страницы руководстваСтраницы руководства предназначаются как справочник для людей, уже понимающих технологию.
|
SEND(2) BSD System Calls Manual SEND(2)
NAME
send, sendmsg, sendto -- send a message from a socket
SYNOPSIS
#include <sys/socket.h>
ssize_t
send(int socket, const void *buffer, size_t length, int flags);
ssize_t
sendmsg(int socket, const struct msghdr *message, int flags);
ssize_t
sendto(int socket, const void *buffer, size_t length, int flags, const struct sockaddr *dest_addr,
socklen_t dest_len);
DESCRIPTION
Send(), sendto(), and sendmsg() are used to transmit a message to another socket. Send() may be used
only when the socket is in a connected state, while sendto() and sendmsg() may be used at any time.
The address of the target is given by dest_addr with dest_len specifying its size. The length of the
message is given by length. If the message is too long to pass atomically through the underlying pro-tocol, protocol,
tocol, the error EMSGSIZE is returned, and the message is not transmitted.
No indication of failure to deliver is implicit in a send(). Locally detected errors are indicated by
a return value of -1.
If no messages space is available at the socket to hold the message to be transmitted, then send() nor-mally normally
mally blocks, unless the socket has been placed in non-blocking I/O mode. The select(2) call may be
used to determine when it is possible to send more data.
The flags parameter may include one or more of the following:
#define MSG_OOB 0x1 /* process out-of-band data */
#define MSG_DONTROUTE 0x4 /* bypass routing, use direct interface */
The flag MSG_OOB is used to send ``out-of-band'' data on sockets that support this notion (e.g.
SOCK_STREAM); the underlying protocol must also support ``out-of-band'' data. MSG_DONTROUTE is usually
used only by diagnostic or routing programs.
The sendmsg() system call uses a msghdr structure to minimize the number of directly supplied argu-ments. arguments.
ments. The msg_iov and msg_iovlen fields of message specify zero or more buffers containing the data
to be sent. msg_iov points to an array of iovec structures; msg_iovlen shall be set to the dimension
of this array. In each iovec structure, the iov_base field specifies a storage area and the iov_len
field gives its size in bytes. Some of these sizes can be zero. The data from each storage area indi-cated indicated
cated by msg_iov is sent in turn. See recv(2) for a complete description of the msghdr structure.
RETURN VALUES
Upon successful completion, the number of bytes which were sent is returned. Otherwise, -1 is returned
and the global variable errno is set to indicate the error.
ERRORS
The send(), sendmsg(), and sendto() system calls will fail if:
[EACCES] The SO_BROADCAST option is not set on the socket and a broadcast address is given as
the destination.
[EAGAIN] The socket is marked non-blocking and the requested operation would block.
[EBADF] An invalid descriptor is specified.
[ECONNRESET] A connection is forcibly closed by a peer.
[EFAULT] An invalid user space address is specified for a parameter.
[EHOSTUNREACH] The destination address specifies an unreachable host.
[EINTR] A signal interrupts the system call before any data is transmitted.
[EMSGSIZE] The socket requires that message be sent atomically, and the size of the message to
be sent makes this impossible. IOV_MAX.
[ENETDOWN] The local network interface used to reach the destination is down.
[ENETUNREACH] No route to the network is present.
[ENOBUFS] The system is unable to allocate an internal buffer. The operation may succeed when
buffers become available.
[ENOBUFS] The output queue for a network interface is full. This generally indicates that the
interface has stopped sending, but may be caused by transient congestion.
[ENOTSOCK] The argument socket is not a socket.
[EOPNOTSUPP] socket does not support (some of) the option(s) specified in flags.
[EPIPE] The socket is shut down for writing or the socket is connection-mode and is no
longer connected. In the latter case, and if the socket is of type SOCK_STREAM, the
SIGPIPE signal is generated to the calling thread.
The sendmsg() and sendto() system calls will fail if:
[EAFNOSUPPORT] Addresses in the specified address family cannot be used with this socket.
[EDESTADDRREQ] The socket is not connection-mode and does not have its peer address set, and no
destination address is specified.
[EISCONN] A destination address was specified and the socket is already connected.
[ENOENT] A component of the pathname does not name an existing file or the path name is an
empty string.
[ENOMEM] Insufficient memory is available to fulfill the request.
[ENOTCONN] The socket is connection-mode, but is not connected.
[ENOTDIR] A component of the path prefix of the pathname in the socket address is not a direc-tory. directory.
tory.
The send() system call will fail if:
[EDESTADDRREQ] The socket is not connection-mode and no peer address is set.
[ENOTCONN] The socket is not connected or otherwise has not had the peer pre-specified.
The sendmsg() system call will fail if:
[EINVAL] The sum of the iov_len values overflows an ssize_t.
[EMSGSIZE] The socket requires that message be sent atomically, and the size of the message to
be sent makes this impossible, or the msg_iovlen member of the msghdr structure
pointed to by message is less than or equal to 0 or is greater than IOV_MAX.
LEGACY SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>
The include file <sys/types.h> is necessary.
SEE ALSO
fcntl(2), getsockopt(2), recv(2), select(2), socket(2), write(2), compat(5)
HISTORY
The send() function call appeared in 4.2BSD.
4.2 Berkeley Distribution February 21, 1994 4.2 Berkeley Distribution
|
Сообщение о проблемах
Способ сообщить о проблеме с этой страницей руководства зависит от типа проблемы:
- Ошибки содержания
- Ошибки отчета в содержании этой документации со ссылками на отзыв ниже.
- Отчеты об ошибках
- Сообщите об ошибках в функциональности описанного инструмента или API через Генератор отчетов Ошибки.
- Форматирование проблем
- Отчет, форматирующий ошибки в интерактивной версии этих страниц со ссылками на отзыв ниже.