Manpages

이 름

send, sendto, sendmsg − 소 켓 으 로 부 터 의 메 시 지 를 보 낸 다 .

사 용 법

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

int send(int s, const void *msg, size_t len, int flags);
int sendto(int
s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
int sendmsg(int
s, const struct msghdr *msg, int flags);

설 명

Send, sendto, 그 리 고 sendmsg 는 다 른 소 켓 으 로 메 시 지 를 보 내 는 데 사 용 된 다 . Send 은 소 켓 이 connected 상 태 에 있 을 때 사 용 된 다 . 반 면 sendtosendmsg 언 제 든 사 용 할 수 있 다 .

목 표 의 주 소 는 to 가 그 것 의 크 기 를 정 하 는 tolen 과 함 께 주 어 진 다 . 메 시 지 의 길 이 는 len. 으 로 주 어 진 다 . 메 시 지 가 너 무 길 어 서 기 초 적 인 프 로 토 콜 을 사 용 해 자 동 으 로 넘 어 갈 수 없 다 면 , 에 러 EMSGSIZE 가 반 환 되 고 , 메 시 지 는 전 해 지 지 않 는 다 .

send. 에 는 전 달 을 실 패 할 징 후 는 없 다 . 국 부 적 으 로 지 적 되 는 에 러 는 −1의 반 환 값 에 의 해 지 적 된 다 .

메 시 지 가 소 켓 의 send 버 퍼 에 맞 지 않 으 면 , send 는 소 켓 이 non-blocking I/O mode에 있 지 않 는 다 면 일 반 적 으 로 막 는 다 non-blocking mode에 서 이 런 경 우 엔 , EAGAIN 을 반 환 한 다 . select(2) 호 출 은 언 제 다 음 자 료 를 보 낼 지 를 결 정 하 는 데 쓰 인 다 .

flags 매 개 변 수 는 flagword이 고 , 아 래 flag를 가 질 수 있 다 :
MSG_OOB

out-of-band data를 이 개 념 을 지 원 하 는 소 켓 으 로 보 낸 다 (e.g. SOCK_STREAM); 기 초 프 로 토 콜 은 반 드 시 out-of-band data를 지 원 한 다 ..

MSG_DONTROUTE

패 킷 을 전 송 하 는 데 게 이 트 웨 이 를 사 용 하 지 않 고 , 직 접 연 결 된 네 트 웍 을 통 해 서 호 스 트 로 보 낸 다 . 이 것 은 diagnostic 혹 은 routing program에 의 해 서 만 사 용 된 다 . 이 것 은 오 직 프 로 토 콜 군 을 위 해 서 만 정 의 된 다 ; 패 킷 소 켓 은 하 지 않 는 다 .

MSG_DONTWAIT

non-blocking operation을 가 능 케 한 다 ; operation이 막 혔 을 때 EAGAIN 가 반 환 된 다 . (이 것 은 또 한 O_NONBLOCKF_SETFL fcntl(2) 와 함 께 사 용 하 는 것 을 가 능 하 게 할 수 있 다 .)

MSG_NOSIGNAL

다 른 한 쪽 끝 이 연 결 을 끊 었 을 때 , 소 켓 으 로 부 터 비 롯 된 스 트 림 상 의 에 러 에 SIGPIPE 을 보 내 지 않 도 록 요 구 한 다 . EPIPE 에 러 는 여 전 히 반 환 된 다 .

msghdr 구 조 에 대 한 설 명 을 보 려 면 recv(2) 을 보 라 . msg_controlmsg_controllen 구 성 요 소 를 사 용 하 는 제 어 정 보 를 보 낼 수 있 다 . 커 널 이 처 리 할 수 있 는 최 대 제 어 버 퍼 의 길 이 는 net.core.optmem_max sysctl에 의 해 소 켓 단 위 로 제 한 되 어 있 다 . ; socket(7). 을 보 라

반 환 값

보 내 진 문 자 의 수 를 반 환 하 거 나 에 러 발 생 시 −1을 반 환 한 다 .

에 러

이 것 은 소 켓 레 이 어 에 의 해 발 생 되 는 몇 몇 표 준 적 인 에 러 다 . 추 가 적 인 에 러 는 기 초 프 로 토 콜 모 듈 로 부 터 발 생 되 거 나 반 환 된 다 ; 각 각 의 매 뉴 얼 을 참 조 하 라 .

EBADF

실 제 하 지 않 는 descriptor가 지 정 되 었 다 .

ENOTSOCK

독 립 변 수 s 가 소 켓 이 아 니 다 .

EFAULT

실 제 하 지 않 는 사 용 자 공 간 주 소 가 매 개 변 수 로 지 정 되 었 다 .

EMSGSIZE

소 켓 이 메 시 지 를 자 동 으 로 보 내 줄 것 을 요 청 했 지 만 , 보 내 진 메 시 지 의 크 기 가 이 것 을 불 가 능 하 게 하 였 다 .

EAGAIN혹 은 EWOULDBLOCK

소 켓 이 non-blocking을 표 시 하 였 고 , 요 구 된 operation이 깨 졌 다 .

ENOBUFS

네 트 웍 인 터 페 이 스 를 위 한 출 력 큐 가 가 득 찼 다 . 이 것 은 일 반 적 으 로 인 터 페 이 스 가 전 송 을 멈 추 는 것 으 로 나 타 난 다 . 하 지 만 이 것 은 순 간 적 인 정 체 로 인 한 것 이 다 . (이 것 은 리 눅 스 에 서 는 일 어 날 수 없 다 . 장 치 큐 가 넘 칠 때 패 킷 은 조 용 히 중 단 된 다 .)

EINTR

신 호 가 발 생 했 다 .

ENOMEM

사 용 가 능 한 메 모 리 가 없 다 .

EINVAL

실 제 사 용 되 지 않 는 독 립 변 수 가 통 과 했 다 .

EPIPE

소 켓 으 로 부 터 의 연 결 에 서 로 컬 앤 드 가 꺼 졌 다 . MSG_NOSIGNAL 이 설 정 되 어 있 지 않 을 경 우 , 프 로 세 스 역 시 SIGPIPE 를 받 는 다 .

호 환

4.4BSD, SVr4, POSIX 1003.1g draft (이 함 수 는 4.2BSD에 있 다 ).

주 의

위 에 서 주 어 진 초 기 치 는 Single Unix Specification을 따 른 다 , glibc2와 마 찬 가 지 이 다 : flags 독 립 변 수 는 BSD 4.*에 서 ’int’이 다 . 하 지 만 , libc4와 libc5에 선 ’unsigned int’이 다 ; len 독 립 변 수 는 BSD 4.*과 libc4에 서 ’int’이 다 . 하 지 만 libc5에 선 ’size_t’이 다 ; tolen 독 립 변 수 는 BSD 4.*과 libc4, libc5에 서 ’int’이 다 . accept(2). 도 참 조 하 라 .

관 련 항 목

fcntl(2), recv(2), select(2), getsockopt(2), sendfile(2), socket(2), write(2), socket(7), ip(7), tcp(7), udp(7)

역 자

ASPLINUX<man [AT] asp-linux.kr>, 2000년 8월 1일

COMMENTS