- Today
- Total
Phantom
소켓함수 본문
C에서 소켓은 파일처럼 다뤄진다. 소켓도 파일 서술자를 사용해 식별한다.
소켓이 파일처럼 다뤄지므로 read()와 write()함수를 소켓 파일서술자(file descriptor)로 사용해 데이터를 받고 보낼 수 있다.
하지만 소켓을 다루는 특별하게 설계된 함수들도 있다.
이 함수들은 /usr/include/sys/sockets.h에 정의되 있다.
socket(int domain, int type, int protocol) - 새 소켓을 만드는데 사용한다. 소켓 파일 서술자를리턴한다. 오류시 -1을 리턴한다.
connect(int fd, struct sockaddr *remote_host, socklen_t addr_length) - 소켓을 원격호스트와 연결한다. 성공하면 0, 오류시 -1을 리턴한다.
bind(int fd, struct sockaddr *local_addr, socklen_t addr_length) - 들어오는 연결을 듣기위해 소켓을 로컬호스트와 바인딩한다. 성공하면 0, 오류시 -1을 리턴한다.
listen(int fd, int backlog_queue_size) - 들어오는 연결을 듣고 , 들어오는 연결 요청을 최대 backlog_queue_size만큼 큐에 넣는다. 성공하면 0, 오류시 -1을 리턴한다.
accept(int fd, sockaddr *remote_host, socklen_t *addr_length) - 바인딩된 소켓의 들어오는 연결을 받아들인다. 원격호스트의 주소정보는 remote_host에 쓰고, 주소 구조체의 길이는 *addr_length에 쓴다. 이 함수는 연결된 소켓을 식별할 수 있게 새 소켓 파일 서술자를 리턴한다. 오류시 -1을 리턴한다.
send(int fd, void *buffer, size_t n, int flags) - *buffer의 n바이트를 소켓fd로 보낸다. 보낸 바이트 수를 리턴하며 오류시 -1을 리턴한다.
recv(int fd, void *buffer, size_t n, int flags) - 소켓 fd에서 n바이트를 읽어 *buffer에 넣는다. 받은 바이트 수를 리턴하며 오류시 -1을 리턴한다.
socket()함수로 소켓이 생성되면 도메인, 타입 , 소켓의 프로토콜이 명시돼야한다. 도메인은 소켓의 프로토콜 패일리를 뜻한다.
'프로그래밍에 대한 정보들' 카테고리의 다른 글
알고리즘 분석 (0) | 2014.04.16 |
---|---|
메인보드 (0) | 2014.03.18 |
파일의 압축 및 백업 (0) | 2013.05.13 |
시스템의 로그파일과 로그기록 삭제방법 (0) | 2013.05.06 |
fsck 명령어 (0) | 2013.05.06 |