Phantom

소켓함수 본문

프로그래밍에 대한 정보들

소켓함수

Ph4nt0m_ 2014. 5. 1. 14:51
반응형

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
Comments