1 '\" te 2 .\" Copyright (C) 2009, Sun Microsystems, Inc. All Rights Reserved 3 .\" Copyright 1989 AT&T 4 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. 5 .\" See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with 6 .\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] 7 .TH SEND 3SOCKET "Jun 18, 2017" 8 .SH NAME 9 send, sendto, sendmsg \- send a message from a socket 10 .SH SYNOPSIS 11 .LP 12 .nf 13 \fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-lsocket\fR \fB -lnsl \fR [ \fIlibrary\fR... ] 14 #include <sys/types.h> 15 #include <sys/socket.h> 16 17 \fBssize_t\fR \fBsend\fR(\fBint\fR \fIs\fR, \fBconst void *\fR\fImsg\fR, \fBsize_t\fR \fIlen\fR, \fBint\fR \fIflags\fR); 18 .fi 19 20 .LP 21 .nf 22 \fBssize_t\fR \fBsendto\fR(\fBint\fR \fIs\fR, \fBconst void *\fR\fImsg\fR, \fBsize_t\fR \fIlen\fR, \fBint\fR \fIflags\fR, 23 \fBconst struct sockaddr *\fR\fIto\fR, \fBint\fR \fItolen\fR); 24 .fi 25 26 .LP 27 .nf 28 \fBssize_t\fR \fBsendmsg\fR(\fBint\fR \fIs\fR, \fBconst struct msghdr *\fR\fImsg\fR, \fBint\fR \fIflags\fR); 29 .fi 30 31 .SH DESCRIPTION 32 .LP 33 The \fBsend()\fR, \fBsendto()\fR, and \fBsendmsg()\fR functions are used to 34 transmit a message to another transport end-point. The \fBsend()\fR function 35 can be used only when the socket is in a connected state. See 36 \fBconnect\fR(3SOCKET). The \fBsendto()\fR and \fBsendmsg()\fR functions can be 37 used at any time. The \fIs\fR socket is created with \fBsocket\fR(3SOCKET). 38 .sp 39 .LP 40 The address of the target is supplied by \fIto\fR with a \fItolen\fR parameter 41 used to specify the size. The length of the message is supplied by the 42 \fIlen\fR parameter. For socket types such as \fBSOCK_DGRAM\fR and 43 \fBSOCK_RAW\fR that require atomic messages, the error \fBEMSGSIZE\fR is 44 returned and the message is not transmitted when it is too long to pass 45 atomically through the underlying protocol. The same restrictions do not apply 46 to \fBSOCK_STREAM\fR sockets. 47 .sp 48 .LP 49 A return value \fB\(mi1\fR indicates locally detected errors. It does not imply 50 a delivery failure. 51 .sp 52 .LP 53 If the socket does not have enough buffer space available to hold a message, 54 the \fBsend()\fR function blocks the message, unless the socket has been placed 55 in non-blocking I/O mode (see \fBfcntl\fR(2)). The \fBselect\fR(3C) or 56 \fBpoll\fR(2) call can be used to determine when it is possible to send more 57 data. 58 .sp 59 .LP 60 The \fIflags\fR parameter is formed from the bitwise OR of zero or more of the 61 following: 62 .sp 63 .ne 2 64 .na 65 \fB\fBMSG_OOB\fR\fR 66 .ad 67 .RS 17n 68 Send \fBout-of-band\fR data on sockets that support this notion. The underlying 69 protocol must also support \fBout-of-band\fR data. Only \fBSOCK_STREAM\fR 70 sockets created in the \fBAF_INET\fR or the \fBAF_INET6\fR address family 71 support out-of-band data. 72 .RE 73 74 .sp 75 .ne 2 76 .na 77 \fB\fBMSG_DONTROUTE\fR\fR 78 .ad 79 .RS 17n 80 The \fBSO_DONTROUTE\fR option is turned on for the duration of the operation. 81 It is used only by diagnostic or routing programs. 82 .RE 83 84 .sp 85 .ne 2 86 .na 87 \fB\fBMSG_NOSIGNAL\fR\fR 88 .ad 89 .RS 17n 90 Don't generate the \fBSIGPIPE\fR signal when a stream-oriented socket is no 91 longer connected. 92 .RE 93 94 .sp 95 .LP 96 See \fBrecv\fR(3SOCKET) for a description of the \fBmsghdr\fR structure. 97 .SH RETURN VALUES 98 .LP 99 Upon successful completion, these functions return the number of bytes sent. 100 Otherwise, they return \fB-1\fR and set \fBerrno\fR to indicate the error. 101 .SH ERRORS 102 .LP 103 The \fBsend()\fR, \fBsendto()\fR, and \fBsendmsg()\fR functions return errors 104 under the following conditions: 105 .sp 106 .ne 2 107 .na 108 \fB\fBEBADF\fR\fR 109 .ad 110 .RS 16n 111 \fIs\fR is not a valid file descriptor. 112 .RE 113 114 .sp 115 .ne 2 116 .na 117 \fB\fBECONNRESET\fR\fR 118 .ad 119 .RS 16n 120 The \fIs\fR argument refers to a connection oriented socket and the connection 121 was forcibly closed by the peer and is no longer valid. I/O can no longer be 122 performed to \fIfiledes\fR. 123 .RE 124 125 .sp 126 .ne 2 127 .na 128 \fB\fBEINTR\fR\fR 129 .ad 130 .RS 16n 131 The operation was interrupted by delivery of a signal before any data could be 132 buffered to be sent. 133 .RE 134 135 .sp 136 .ne 2 137 .na 138 \fB\fBEMSGSIZE\fR\fR 139 .ad 140 .RS 16n 141 The message is too large to be sent all at once (as the socket requires), or 142 the \fImsg_iovlen\fR member of the \fBmsghdr\fR structure pointed to by message 143 is less than or equal to 0 or is greater than {\fBIOV_MAX\fR}. 144 .RE 145 146 .sp 147 .ne 2 148 .na 149 \fB\fBENOMEM\fR\fR 150 .ad 151 .RS 16n 152 Insufficient memory is available to complete the operation. 153 .RE 154 155 .sp 156 .ne 2 157 .na 158 \fB\fBENOSR\fR\fR 159 .ad 160 .RS 16n 161 Insufficient STREAMS resources are available for the operation to complete. 162 .RE 163 164 .sp 165 .ne 2 166 .na 167 \fB\fBENOTSOCK\fR\fR 168 .ad 169 .RS 16n 170 \fIs\fR is not a socket. 171 .RE 172 173 .sp 174 .ne 2 175 .na 176 \fB\fBEWOULDBLOCK\fR\fR 177 .ad 178 .RS 16n 179 The socket is marked non-blocking and the requested operation would block. 180 \fBEWOULDBLOCK\fR is also returned when sufficient memory is not immediately 181 available to allocate a suitable buffer. In such a case, the operation can be 182 retried later. 183 .RE 184 185 .sp 186 .ne 2 187 .na 188 \fB\fBECONNREFUSED\fR\fR 189 .ad 190 .RS 16n 191 The requested connection was refused by the peer. For connected IPv4 and IPv6 192 datagram sockets, this indicates that the system received an \fBICMP 193 Destination Port Unreachable\fR message from the peer in response to some prior 194 transmission. 195 .RE 196 197 .sp 198 .LP 199 The \fBsend()\fR and \fBsendto()\fR functions return errors under the following 200 conditions: 201 .sp 202 .ne 2 203 .na 204 \fB\fBEINVAL\fR\fR 205 .ad 206 .RS 10n 207 The \fIlen\fR argument overflows a \fBssize_t\fR. 208 .sp 209 Inconsistent port attributes for system call. 210 .RE 211 212 .sp 213 .LP 214 The \fBsendto()\fR function returns errors under the following conditions: 215 .sp 216 .ne 2 217 .na 218 \fB\fBEINVAL\fR\fR 219 .ad 220 .RS 10n 221 The value specified for the \fItolen\fR parameter is not the size of a valid 222 address for the specified address family. 223 .RE 224 225 .sp 226 .ne 2 227 .na 228 \fB\fBEISCON\fR\fR 229 .ad 230 .RS 10n 231 A destination address was specified and the socket is already connected. 232 .RE 233 234 .sp 235 .LP 236 The \fBsendmsg()\fR function returns errors under the following conditions: 237 .sp 238 .ne 2 239 .na 240 \fB\fBEINVAL\fR\fR 241 .ad 242 .RS 10n 243 The \fBmsg_iovlen\fR member of the \fBmsghdr\fR structure pointed to by 244 \fImsg\fR is less than or equal to \fB0\fR, or the sum of the \fIiov_len\fR 245 values in the \fBmsg_iov\fR array overflows a \fBssize_t\fR. 246 .sp 247 One of the \fIiov_len\fR values in the \fBmsg_iov\fR array member of the 248 \fBmsghdr\fR structure pointed to by \fImsg\fR is negative, or the sum of the 249 \fIiov_len\fR values in the \fBmsg_iov\fR array overflows a \fBssize_t\fR. 250 .sp 251 \fBmsg_iov\fR contents are inconsistent with port attributes. 252 .RE 253 254 .sp 255 .LP 256 The \fBsend()\fR function returns errors under the following conditions: 257 .sp 258 .ne 2 259 .na 260 \fB\fBEPIPE\fR\fR 261 .ad 262 .RS 9n 263 The socket is shut down for writing, or the socket is connection-mode and is no 264 longer connected. In the latter case, if the socket is of type 265 \fBSOCK_STREAM\fR, the \fBSIGPIPE\fR signal is generated to the calling thread 266 unless the \fBMSG_NOSIGNAL\fR flag is set. 267 .RE 268 269 .SH ATTRIBUTES 270 .LP 271 See \fBattributes\fR(5) for descriptions of the following attributes: 272 .sp 273 274 .sp 275 .TS 276 box; 277 c | c 278 l | l . 279 ATTRIBUTE TYPE ATTRIBUTE VALUE 280 _ 281 Interface Stability Committed 282 _ 283 MT-Level Safe 284 .TE 285 286 .SH SEE ALSO 287 .LP 288 \fBfcntl\fR(2), \fBpoll\fR(2), \fBwrite\fR(2), \fBconnect\fR(3SOCKET), 289 \fBgetsockopt\fR(3SOCKET), \fBrecv\fR(3SOCKET), \fBselect\fR(3C), 290 \fBsockaddr\fR(3SOCKET), \fBsocket\fR(3SOCKET), \fBsocket.h\fR(3HEAD), 291 \fBattributes\fR(5)