send(2) - wariua/manpages-ko GitHub Wiki

NAME

send, sendto, sendmsg - μ†ŒμΌ“μœΌλ‘œ λ©”μ‹œμ§€ 보내기

SYNOPSIS

#include <sys/types.h>
#include <sys/socket.h>

ssize_t send(int sockfd, const void *buf, size_t len, int flags);

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
               const struct sockaddr *dest_addr, socklen_t addrlen);

ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);

DESCRIPTION

μ‹œμŠ€ν…œ 호좜 send(), sendto(), sendmsg()λ₯Ό μ΄μš©ν•΄ λ‹€λ₯Έ μ†ŒμΌ“μœΌλ‘œ λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•œλ‹€.

send() ν˜ΈμΆœμ€ μ†ŒμΌ“μ΄ μ—°κ²° μƒνƒœμΌ λ•Œλ§Œ (κ·Έλž˜μ„œ λŒ€μƒ μˆ˜μ‹ μžκ°€ μ•Œλ €μ§„ κ²½μš°μ—λ§Œ) μ“Έ 수 μžˆλ‹€. send()와 write(2)의 μœ μΌν•œ μ°¨μ΄λŠ” flags의 쑴재 μ—¬λΆ€λ‹€. flags μΈμžκ°€ 0이면 send()λŠ” write(2)와 λ™λ“±ν•˜λ‹€. λ˜ν•œ λ‹€μŒ ν˜ΈμΆœμ€

send(sockfd, buf, len, flags);

λ‹€μŒκ³Ό λ™λ“±ν•˜λ‹€.

sendto(sockfd, buf, len, flags, NULL, 0);

sockfd μΈμžλŠ” 솑신 μ†ŒμΌ“μ˜ 파일 λ””μŠ€ν¬λ¦½ν„°μ΄λ‹€.

sendto()λ₯Ό μ—°κ²° λͺ¨λ“œ (SOCK_STREAM, SOCK_SEQPACKET) μ†ŒμΌ“μ— μ“°λ©΄ dest_addr 및 addrlen 인자λ₯Ό λ¬΄μ‹œν•˜λ©° (두 μΈμžκ°€ NULLκ³Ό 0이 μ•„λ‹ˆλ©΄ EISCONN을 λ°˜ν™˜ν•  μˆ˜λ„ 있음), μ†ŒμΌ“μ΄ μ‹€μ œλ‘œ 연결돼 μžˆμ§€ μ•Šμ€ 경우 ENOTCONN 였λ₯˜λ₯Ό λ°˜ν™˜ν•œλ‹€. κ·Έ μ™Έ κ²½μš°μ—λŠ” dest_addr이 λŒ€μƒμ˜ μ£Όμ†Œμ΄κ³  addrlen이 κ·Έ 크기λ₯Ό λ‚˜νƒ€λ‚Έλ‹€. sendmsg()μ—μ„œλŠ” msg.msg_name이 λŒ€μƒμ˜ μ£Όμ†Œμ΄κ³  msg.msg_namelen이 κ·Έ 크기λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

send()와 sendto()μ—μ„œλŠ” buf에 λ©”μ‹œμ§€κ°€ 있으며 길이가 len이닀. sendmsg()μ—μ„œλŠ” msg.msg_iov λ°°μ—΄μ˜ ν•­λͺ©λ“€μ΄ λ©”μ‹œμ§€λ₯Ό 가리킨닀. sendmsg() ν˜ΈμΆœλ‘œλŠ” (μ œμ–΄ 정보라고도 ν•˜λŠ”) 보쑰 데이터λ₯Ό λ³΄λ‚΄λŠ” 것도 κ°€λŠ₯ν•˜λ‹€.

λ©”μ‹œμ§€κ°€ λ„ˆλ¬΄ κΈΈμ–΄μ„œ ν•˜μœ„ ν”„λ‘œν† μ½œμ„ μ›μžμ μœΌλ‘œ 톡과할 수 μ—†μœΌλ©΄ EMSGSIZEλ₯Ό λ°˜ν™˜ν•˜λ©° λ©”μ‹œμ§€λŠ” μ „μ†‘λ˜μ§€ μ•ŠλŠ”λ‹€.

send()μ—μ„œλŠ” μ–΄λ–€ 전달 μ‹€νŒ¨ ν‘œμ‹œλ„ 암묡적이지 μ•Šλ‹€. λ‘œμ»¬μ—μ„œ 였λ₯˜λ₯Ό νƒμ§€ν•˜λ©΄ λ°˜ν™˜ κ°’ -1둜 λ‚˜νƒ€λ‚Έλ‹€.

λ©”μ‹œμ§€κ°€ μ†ŒμΌ“μ˜ 솑신 버퍼에 λ“€μ–΄κ°€μ§€ μ•ŠμœΌλ©΄ 보톡은 send()κ°€ 블둝 λœλ‹€. ν•˜μ§€λ§Œ μ†ŒμΌ“μ„ λ…ΌλΈ”λ‘œν‚Ή I/O λͺ¨λ“œλ‘œ λ§Œλ“€μ–΄ λ’€μœΌλ©΄ EAGAINμ΄λ‚˜ EWOULDBLOCK 였λ₯˜λ‘œ μ‹€νŒ¨ν•˜κ²Œ λœλ‹€. select(2) ν˜ΈμΆœμ„ μ΄μš©ν•΄ 데이터λ₯Ό 더 λ³΄λ‚΄λŠ” 게 κ°€λŠ₯ν•œμ§€ μ•Œμ•„λ‚Ό 수 μžˆλ‹€.

flags 인자

flags μΈμžλŠ” λ‹€μŒ ν”Œλž˜κ·Έλ“€μ„ 0개 이상 λΉ„νŠΈ OR ν•΄μ„œ κ΅¬μ„±ν•œλ‹€.

MSG_CONFIRM (λ¦¬λˆ…μŠ€ 2.3.15λΆ€ν„°)
μ–΄λ–€ 진척이 μžˆμ—ˆλ‹€κ³ , 즉 μƒλŒ€μ—κ²Œμ„œ μ„±κ³΅μ μœΌλ‘œ 응닡을 λ°›μ•˜λ‹€κ³  링크 κ³„μΈ΅μ—κ²Œ μ•Œλ¦°λ‹€. μ•Œλ € μ£Όμ§€ μ•ŠμœΌλ©΄ 링크 κ³„μΈ΅μ—μ„œλŠ” 주기적으둜 (κ°€λ Ή μœ λ‹ˆμΊμŠ€νŠΈ ARPλ₯Ό 톡해) 이웃을 μž¬μ‘°μ‚¬ν•˜κ²Œ λœλ‹€. SOCK_DGRAM 및 SOCK_RAW μ†ŒμΌ“μ—μ„œλ§Œ μœ νš¨ν•˜λ©° ν˜„μž¬ IPv4 및 IPv6μ—λ§Œ κ΅¬ν˜„λΌ μžˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ arp(7)λ₯Ό 보라.
MSG_DONTROUTE
κ²Œμ΄νŠΈμ›¨μ΄λ₯Ό μ΄μš©ν•΄ νŒ¨ν‚·μ„ 보내지 μ•Šκ³  직접 μ—°κ²°λœ 망의 호슀트둜만 보낸닀. 일반적으둜 진단 ν”„λ‘œκ·Έλž¨μ΄λ‚˜ λΌμš°νŒ… ν”„λ‘œκ·Έλž¨μ—μ„œλ§Œ μ“΄λ‹€. λΌμš°νŒ…μ„ ν•˜λŠ” ν”„λ‘œν† μ½œ μ‘±μ—λ§Œ κ·œμ •λΌ μžˆλ‹€. κ°€λ Ή νŒ¨ν‚· μ†ŒμΌ“μ€ μ•„λ‹ˆλ‹€.
MSG_DONTWAIT (λ¦¬λˆ…μŠ€ 2.2λΆ€ν„°)
λ…ΌλΈ”λ‘œν‚Ή λ™μž‘μ„ μΌ λ‹€. λ™μž‘μ΄ 블둝 λ˜λ €λŠ” 경우 EAGAINμ΄λ‚˜ EWOULDBLOCK을 λ°˜ν™˜ν•œλ‹€. (fcntl(2) F_SETFL λ™μž‘μ„ 톡해) O_NONBLOCK ν”Œλž˜κ·Έλ₯Ό μ„€μ •ν•œ κ²½μš°μ™€ λΉ„μŠ·ν•œ λ™μž‘ 방식인데, MSG_DONTWAIT이 ν˜ΈμΆœλ³„ μ˜΅μ…˜μΈ 반면 O_NONBLOCK은 μ—΄λ¦° 파일 기술 ν•­λͺ©μ— λŒ€ν•œ μ„€μ •μ΄μ–΄μ„œ (open(2) μ°Έκ³ ) 호좜 ν”„λ‘œμ„ΈμŠ€ λ‚΄ λͺ¨λ“  μŠ€λ ˆλ“œλΏ μ•„λ‹ˆλΌ 같은 μ—΄λ¦° 파일 기술 ν•­λͺ©μ„ κ°€λ¦¬ν‚€λŠ” 파일 λ””μŠ€ν¬λ¦½ν„°λ₯Ό κ°€μ§„ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ—λ„ 영ν–₯을 끼치게 λœλ‹€.
MSG_EOR (λ¦¬λˆ…μŠ€ 2.2λΆ€ν„°)
(SOCK_SEQPACKET νƒ€μž… μ†ŒμΌ“μ²˜λŸΌ λ ˆμ½”λ“œ κ°œλ…μ„ μ§€μ›ν•˜λŠ” κ²½μš°μ—) λ ˆμ½”λ“œλ₯Ό 끝낸닀.
MSG_MORE (λ¦¬λˆ…μŠ€ 2.4.4λΆ€ν„°)

ν˜ΈμΆœμžκ°€ λ³΄λ‚΄λ €λŠ” 데이터가 더 μžˆλ‹€. TCP μ†ŒμΌ“μ—μ„œ 이 ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•΄μ„œ TCP_CORK μ†ŒμΌ“ μ˜΅μ…˜(tcp(7) μ°Έκ³ )κ³Ό 같은 효과λ₯Ό μ–»λŠ”λ° 이 ν”Œλž˜κ·ΈλŠ” ν˜ΈμΆœλ³„λ‘œ μ„€μ •ν•  수 μžˆλ‹€λŠ” 점이 λ‹€λ₯΄λ‹€.

λ¦¬λˆ…μŠ€ 2.6λΆ€ν„°λŠ” UDP μ†ŒμΌ“μ—μ„œλ„ 이 ν”Œλž˜κ·Έλ₯Ό μ§€μ›ν•œλ‹€. 이 ν”Œλž˜κ·Έλ₯Ό μ„€μ •ν•œ 호좜둜 보낸 데이터 λͺ¨λ‘λ₯Ό μ»€λ„μ—μ„œ λ°μ΄ν„°κ·Έλž¨ ν•œ 개둜 λ§Œλ“€κ²Œ ν•˜λ©° 이 ν”Œλž˜κ·Έλ₯Ό μ§€μ •ν•˜μ§€ μ•Šμ€ ν˜ΈμΆœμ„ μˆ˜ν–‰ν•΄μ•Ό κ·Έ λ°μ΄ν„°κ·Έλž¨μ΄ μ „μ†‘λœλ‹€. (udp(7)μ—μ„œ μ„€λͺ…ν•˜λŠ” UDP_CORK μ†ŒμΌ“ μ˜΅μ…˜λ„ μ°Έκ³ .)

MSG_NOSIGNAL (λ¦¬λˆ…μŠ€ 2.2λΆ€ν„°)
슀트림 μ§€ν–₯ μ†ŒμΌ“μ—μ„œ μƒλŒ€κ°€ 연결을 닫은 κ²½μš°μ— SIGPIPE μ‹œκ·Έλ„μ„ λ°œμƒμ‹œν‚€μ§€ μ•ŠλŠ”λ‹€. EPIPE 였λ₯˜λŠ” μ—¬μ „νžˆ λ°˜ν™˜ν•œλ‹€. sigaction(2)으둜 SIGPIPEλ₯Ό λ¬΄μ‹œν•˜λŠ” 것과 λ™μž‘μ΄ λΉ„μŠ·ν•œλ°, MSG_NOSIGNAL은 ν˜ΈμΆœλ³„ κΈ°λŠ₯이고 SIGPIPE λ¬΄μ‹œν•˜κΈ°λŠ” ν”„λ‘œμ„ΈμŠ€ 속성을 μ„€μ •ν•˜μ—¬ ν”„λ‘œμ„ΈμŠ€ λ‚΄ λͺ¨λ“  μŠ€λ ˆλ“œμ— 영ν–₯을 μ€€λ‹€.
MSG_OOB
μ§€μ›ν•˜λŠ” (κ°€λ Ή SOCK_STREAM νƒ€μž…) μ†ŒμΌ“μΈ κ²½μš°μ— λŒ€μ—­μ™Έ 데이터λ₯Ό 보낸닀. ν•˜μœ„ ν”„λ‘œν† μ½œμ—μ„œλ„ λŒ€μ—­μ™Έ 데이터λ₯Ό 지원해야 ν•œλ‹€.

sendmsg()

sendmsg()μ—μ„œ μ‚¬μš©ν•˜λŠ” msghdr ꡬ쑰체의 μ •μ˜λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

struct msghdr {
    void         *msg_name;       /* μ£Όμ†Œ, 선택적 */
    socklen_t     msg_namelen;    /* μ£Όμ†Œ 크기 */
    struct iovec *msg_iov;        /* μŠ€μΊν„°/κ°œλ” λ°°μ—΄ */
    size_t        msg_iovlen;     /* msg_iov의 ν•­λͺ© 개수 */
    void         *msg_control;    /* 보쑰 데이터, μ•„λž˜ μ°Έκ³  */
    size_t        msg_controllen; /* 보쑰 데이터 버퍼 길이 */
    int           msg_flags;      /* ν”Œλž˜κ·Έ (μ‚¬μš©ν•˜μ§€ μ•ŠμŒ) */
};

μ—°κ²° μ•ˆ 된 μ†ŒμΌ“μ—μ„œ msg_name ν•„λ“œλ₯Ό μ΄μš©ν•΄ λ°μ΄ν„°κ·Έλž¨μ˜ λŒ€μƒ μ£Όμ†Œλ₯Ό μ§€μ •ν•œλ‹€. 이 ν•„λ“œλŠ” μ£Όμ†Œλ₯Ό 담은 버퍼λ₯Ό 가리킀며 msg_namelen ν•„λ“œλŠ” κ·Έ μ£Όμ†Œμ˜ 크기둜 μ„€μ •ν•΄μ•Ό ν•œλ‹€. μ—°κ²°λœ μ†ŒμΌ“μ—μ„œλŠ” 이 ν•„λ“œλ“€μ„ 각각 NULLκ³Ό 0으둜 μ§€μ •ν•΄μ•Ό ν•œλ‹€.

msg_iov 및 msg_iovlen ν•„λ“œλŠ” writev(2)μ—μ„œμ²˜λŸΌ μŠ€μΊν„°-κ°œλ” μœ„μΉ˜λ“€μ„ μ§€μ •ν•œλ‹€.

msg_control 및 msg_controllen 멀버λ₯Ό μ΄μš©ν•΄ μ œμ–΄ 정보λ₯Ό 보낼 수 μžˆλ‹€. μ»€λ„μ—μ„œ μ²˜λ¦¬ν•  수 μžˆλŠ” μ†ŒμΌ“λ³„ μ œμ–΄ 버퍼 μ΅œλŒ€ 길이λ₯Ό /proc/sys/net/core/optmem_max 값이 μ œν•œν•œλ‹€. socket(7) μ°Έκ³ .

msg_flags ν•„λ“œλŠ” λ¬΄μ‹œν•œλ‹€.

RETURN VALUE

성곡 μ‹œ 이 ν˜ΈμΆœλ“€μ€ 보낸 λ°”μ΄νŠΈ 수λ₯Ό λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° errnoλ₯Ό 적절히 μ„€μ •ν•œλ‹€.

ERRORS

μ†ŒμΌ“ κ³„μΈ΅μ—μ„œ μƒμ„±ν•˜λŠ” λͺ‡ κ°€μ§€ ν‘œμ€€ 였λ₯˜κ°€ μžˆλ‹€. μΆ”κ°€λ‘œ ν•˜μœ„ ν”„λ‘œν† μ½œ λͺ¨λ“ˆμ—μ„œ λ‹€λ₯Έ 였λ₯˜λ₯Ό μƒμ„±ν•˜μ—¬ λ°˜ν™˜ν•  μˆ˜λ„ μžˆλ‹€. ν”„λ‘œν† μ½œλ³„ 맀뉴얼 νŽ˜μ΄μ§€λ₯Ό μ°Έκ³ ν•˜λΌ.

EACCES

(경둜λͺ…μœΌλ‘œ μ‹λ³„ν•˜λŠ” μœ λ‹‰μŠ€ 도메인 μ†ŒμΌ“μ—μ„œ) λŒ€μƒ μ†ŒμΌ“ νŒŒμΌμ—μ„œ μ“°κΈ° κΆŒν•œμ΄ κ±°λΆ€λ˜μ—ˆλ‹€. λ˜λŠ” 경둜 μ„ λ‘λΆ€μ˜ ν•œ λ””λ ‰ν„°λ¦¬μ—μ„œ 탐색 κΆŒν•œμ΄ κ±°λΆ€λ˜μ—ˆλ‹€. (path_resolution(7) μ°Έκ³ .)

(UDP μ†ŒμΌ“μ—μ„œ) μœ λ‹ˆμΊμŠ€νŠΈ μ£Όμ†ŒμΈ κ²ƒμ²˜λŸΌ λ„€νŠΈμ›Œν¬/λΈŒλ‘œλ“œμΊμŠ€νŠΈ μ£Όμ†Œλ‘œ λ³΄λ‚΄λ €λŠ” μ‹œλ„λ₯Ό ν–ˆλ‹€.

EAGAIN λ˜λŠ” EWOULDBLOCK
μ†ŒμΌ“μ΄ λ…ΌλΈ”λ‘œν‚ΉμœΌλ‘œ ν‘œμ‹œλΌ μžˆλŠ”λ° μš”μ²­ λ™μž‘μ΄ 블둝 되렀 ν–ˆλ‹€. POSIX.1-2001μ—μ„œλŠ” 이 κ²½μš°μ— μ–΄λŠ μͺ½ 였λ₯˜λ„ λ°˜ν™˜ν•  수 μžˆλ‹€κ³  ν—ˆμš©ν•˜λ©° 이 μƒμˆ˜λ“€μ΄ 같은 값을 κ°€μ Έμ•Ό ν•œλ‹€κ³  μš”κ΅¬ν•˜μ§€ μ•ŠλŠ”λ‹€. λ”°λΌμ„œ 이식성이 μžˆμ–΄μ•Ό ν•˜λŠ” μ‘μš©μ—μ„œλŠ” 두 κ°€λŠ₯성을 λͺ¨λ‘ 확인해야 ν•œλ‹€.
EAGAIN
(인터넷 도메인 λ°μ΄ν„°κ·Έλž¨ μ†ŒμΌ“) sockfdκ°€ κ°€λ¦¬ν‚€λŠ” μ†ŒμΌ“μ΄ 미리 μ£Όμ†Œμ— κ²°μ†λ˜μ§€ μ•Šμ•„μ„œ μž„μ‹œ ν¬νŠΈμ— κ²°μ†ν•˜λ € ν•  λ•Œ μž„μ‹œ 포트 λ²”μœ„ λ‚΄μ˜ λͺ¨λ“  포트 λ²ˆν˜Έκ°€ ν˜„μž¬ μ‚¬μš© μ€‘μž„μ„ μ•Œκ²Œ 됐닀. ip(7)의 /proc/sys/net/ipv4/ip_local_port_range μ„€λͺ… μ°Έκ³ .
EALREADY
λ‹€λ₯Έ λΉ λ₯Έ μ—΄κΈ°(Fast Open)κ°€ μ§„ν–‰ 쀑이닀.
EBADF
sockfdκ°€ μœ νš¨ν•œ μ—΄λ¦° 파일 λ””μŠ€ν¬λ¦½ν„°κ°€ μ•„λ‹ˆλ‹€.
ECONNRESET
μƒλŒ€κ°€ 연결을 μž¬μ„€μ •ν–ˆλ‹€.
EDESTADDRREQ
μ†ŒμΌ“μ΄ μ—°κ²° λͺ¨λ“œκ°€ μ•„λ‹ˆλ©° μƒλŒ€ μ£Όμ†Œκ°€ 섀정돼 μžˆμ§€ μ•Šλ‹€.
EFAULT
인자둜 μœ νš¨ν•˜μ§€ μ•Šμ€ μ‚¬μš©μž 곡간 μ£Όμ†Œλ₯Ό μ§€μ •ν–ˆλ‹€.
EINTR
데이터λ₯Ό μ „μ†‘ν•˜κΈ° 전에 μ‹œκ·Έλ„μ΄ λ°œμƒν–ˆλ‹€. signal(7) μ°Έκ³ .
EINVAL
μœ νš¨ν•˜μ§€ μ•Šμ€ 인자λ₯Ό μ „λ‹¬ν–ˆλ‹€.
EISCONN
μ—°κ²° λͺ¨λ“œ μ†ŒμΌ“μ΄ 이미 μ—°κ²°λ˜μ–΄ μžˆλŠ”λ° μˆ˜μ‹ μžλ₯Ό μ§€μ •ν–ˆλ‹€. (μ§€κΈˆμ€ 이 였λ₯˜λ₯Ό λ°˜ν™˜ν•  μˆ˜λ„ 있고 μˆ˜μ‹ μž 지정을 λ¬΄μ‹œν•  μˆ˜λ„ μžˆλ‹€.)
EMSGSIZE
λ©”μ‹œμ§€λ₯Ό μ›μžμ μœΌλ‘œ 보내야 ν•˜λŠ” μ†ŒμΌ“ νƒ€μž…μΈλ° 보낼 λ©”μ‹œμ§€μ˜ 크기 λ•Œλ¬Έμ— λΆˆκ°€λŠ₯ν•˜λ‹€.
ENOBUFS
λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€μ˜ 좜λ ₯ 큐가 가득 μ°Όλ‹€. 보톡은 μΈν„°νŽ˜μ΄μŠ€κ°€ 솑신을 λ©ˆμ·„λ‹€λŠ” ν‘œμ‹œμ΄μ§€λ§Œ μˆœκ°„μ μΈ 혼작 λ•Œλ¬Έμ— λ°œμƒν•  μˆ˜λ„ μžˆλ‹€. (μ •μƒμ μœΌλ‘œ λ¦¬λˆ…μŠ€μ—μ„œλŠ” λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€. μž₯치 큐가 λ„˜μΉ  λ•Œ νŒ¨ν‚·μ„ κ·Έλƒ₯ 쑰용히 버린닀.)
ENOMEM
μ‚¬μš© κ°€λŠ₯ λ©”λͺ¨λ¦¬ μ—†μŒ.
ENOTCONN
μ†ŒμΌ“μ΄ 연결돼 μžˆμ§€ μ•ŠμœΌλ©° λŒ€μƒμ„ μ£Όμ§€ μ•Šμ•˜λ‹€.
ENOTSOCK
파일 λ””μŠ€ν¬λ¦½ν„° sockfdκ°€ μ†ŒμΌ“μ„ 가리킀고 μžˆμ§€ μ•Šλ‹€.
EOPNOTSUPP
flags 인자의 μ–΄λ–€ λΉ„νŠΈκ°€ μ†ŒμΌ“ νƒ€μž…μ— λ§žμ§€ μ•Šλ‹€.
EPIPE
μ—°κ²° μ§€ν–₯ μ†ŒμΌ“μ—μ„œ 둜컬 쒅단이 λ‹«ν˜”λ‹€. 이 κ²½μš°μ— MSG_NOSIGNAL을 μ„€μ •ν•˜μ§€ μ•Šμ•˜μœΌλ©΄ ν”„λ‘œμ„ΈμŠ€κ°€ SIGPIPE도 λ°›κ²Œ λœλ‹€.

CONFORMING TO

4.4BSD, SVr4, POSIX.1-2001. 4.2BSDμ—μ„œ 이 μΈν„°νŽ˜μ΄μŠ€λ“€μ΄ 처음 λ“±μž₯ν–ˆλ‹€.

POSIX.1-2001μ—μ„œλŠ” MSG_OOB 및 MSG_EOR ν”Œλž˜κ·Έλ§Œ κΈ°μˆ ν•œλ‹€. POSIX.1-2008μ—μ„œ MSG_NOSIGNAL λͺ…μ„Έλ₯Ό μΆ”κ°€ν–ˆλ‹€. MSG_CONFIRM ν”Œλž˜κ·ΈλŠ” λ¦¬λˆ…μŠ€ ν™•μž₯이닀.

NOTES

POSIX.1-2001에 λ”°λ₯΄λ©΄ msghdr ꡬ쑰체의 msg_controllen ν•„λ“œκ°€ socklen_t νƒ€μž…μ΄μ–΄μ•Ό ν•˜μ§€λ§Œ glibcμ—μ„œλŠ” ν˜„μž¬ size_t νƒ€μž…μœΌλ‘œ ν•˜κ³  μžˆλ‹€.

호좜 ν•œ λ²ˆμ— μ—¬λŸ¬ λ°μ΄ν„°κ·Έλž¨μ„ 전솑할 수 μžˆλŠ” λ¦¬λˆ…μŠ€ μ „μš© μ‹œμŠ€ν…œ ν˜ΈμΆœμ— λŒ€ν•œ λ‚΄μš©μ€ sendmmsg(2)λ₯Ό 보라.

BUGS

λ¦¬λˆ…μŠ€μ—μ„œ ENOTCONN λŒ€μ‹  EPIPEλ₯Ό λ°˜ν™˜ν•  μˆ˜λ„ μžˆλ‹€.

EXAMPLE

getaddrinfo(3)μ—μ„œ sendto() μ‚¬μš©λ‘€λ₯Ό λ³Ό 수 μžˆλ‹€.

SEE ALSO

fcntl(2), getsockopt(2), recv(2), select(2), sendfile(2), sendmmsg(2), shutdown(2), socket(2), write(2), cmsg(3), ip(7), ipv6(7), socket(7), tcp(7), udp(7), unix(7)


2017-09-15

⚠️ **GitHub.com Fallback** ⚠️