udp协议下sendto与recvfrom函数对应的errno
概述
在C/C++中,使用udp socket时,sendto
与 recvfrom
有不同的errno
而在高阶语言Javascript中,使用udp socket, 会将两种类型的错误通过同一个事件 error
抛出来
因此,有必要将 sendto
与 recvfrom
对应的 errno列出来,以便在error
中进行区分
var code = “a9fb4b37-0ec1-447e-b8f9-46ea94ea0880”
内容
当 sendto()
失败时,有如下的错误码:
errno | errmsg |
---|---|
[EAFNOSUPPORT] | Addresses in the specified address family cannot be used with this socket. |
[EAGAIN] or [EWOULDBLOCK] | The socket’s file descriptor is marked O_NONBLOCK and the requested operation would block. |
[EBADF] | The socket argument is not a valid file descriptor. |
[ECONNRESET] | A connection was forcibly closed by a peer. |
[EINTR] | A signal interrupted sendto() before any data was transmitted. |
[EMSGSIZE] | The message is too large to be sent all at once, as the socket requires. |
[ENOTCONN] | The socket is connection-mode but is not connected. |
[ENOTSOCK] | The socket argument does not refer to a socket. |
[EOPNOTSUPP] | The socket argument is associated with a socket that does not support one or more of the values set 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 or SOCK_SEQPACKET and the MSG_NOSIGNAL flag is not set, the SIGPIPE signal is generated to the calling thread. |
[EIO] | An I/O error occurred while reading from or writing to the file system. |
[ELOOP] | A loop exists in symbolic links encountered during resolution of the pathname in the socket address. |
[ENAMETOOLONG] | The length of a component of a pathname is longer than {NAME_MAX}. |
[ENOENT] | A component of the pathname does not name an existing file or the pathname is an empty string. |
[ENOTDIR] | A component of the path prefix of the pathname in the socket address names an existing file that is neither a directory nor a symbolic link to a directory, or the pathname in the socket address contains at least one non- slash character and ends with one or more trailing slash characters and the last pathname component names an existing file that is neither a directory nor a symbolic link to a directory. |
[EACCES] | Search permission is denied for a component of the path prefix; or write access to the named socket is denied. |
[EDESTADDRREQ] | The socket is not connection-mode and does not have its peer address set, and no destination address was specified. |
[EHOSTUNREACH] | The destination host cannot be reached (probably because the host is down or a remote router cannot reach it). |
[EINVAL] | The dest_len argument is not a valid length for the address family. |
[EISCONN] | A destination address was specified and the socket is already connected. |
[ENETDOWN] | The local network interface used to reach the destination is down. |
[ENETUNREACH] | No route to the network is present. |
[ENOBUFS] | Insufficient resources were available in the system to perform the operation. |
[ENOMEM] | Insufficient memory was available to fulfill the request. |
当 recvfrom()
失败时,有如下的错误码:
errno | errmsg |
---|---|
[EAGAIN] or [EWOULDBLOCK] | The socket’s file descriptor is marked O_NONBLOCK and no data is waiting to be received; or MSG_OOB is set and no out-of-band data is available and either the socket’s file descriptor is marked O_NONBLOCK or the socket does not support blocking to await out-of-band data. |
[EBADF] | The socket argument is not a valid file descriptor. |
[ECONNRESET] | A connection was forcibly closed by a peer. |
[EINTR] | A signal interrupted recvfrom() before any data was available. |
[EINVAL] | The MSG_OOB flag is set and no out-of-band data is available. |
[ENOTCONN] | A receive is attempted on a connection-mode socket that is not connected. |
[ENOTSOCK] | The socket argument does not refer to a socket. |
[EOPNOTSUPP] | The specified flags are not supported for this socket type. |
[ETIMEDOUT] | The connection timed out during connection establishment, or due to a transmission timeout on active connection. |
[EIO] | An I/O error occurred while reading from or writing to the file system. |
[ENOBUFS] | Insufficient resources were available in the system to perform the operation. |
[ENOMEM] | Insufficient memory was available to fulfill the request. |