소켓의 주요 함수
- socket(int domain, int type, int protocol)
- 소켓을 만드는데 바로 이 함수를 사용합니다. 소켓 역시 파일로 다루어지기 때문에 반환값은 파일디스크립터입니다. 만약 소켓을 여는데 실패했다면 -1을 리턴합니다.
- connect(int fd, struct sockaddr *remote_host, socklen_t addr_length)
- 원격 호스트(원격 컴퓨터)와 연결하는 함수입니다. 연결된 정보는 remote_host에 저장됩니다. 성공시 0, 오류시 -1을 반환합니다.
- bind(int fd, struct sockaddr *local_addr, socklen_t addr_length)
- 소켓을 바인딩합니다. 이렇게 생각하면 됩니다. 지금 fd로 넘겨지는 소켓과 이 프로세스와 묶는다(bind)라고 생각하시면 됩니다. 그래서 해당 프로세스는 소켓을 통해 다른 컴퓨터로부터 연결을 받아들일 수 있습니다.
- listen(int fd, int backlog_queue_size)
- 소켓을 통해 들어오는 연결을 듣습니다. backlog_queue_size만큼 연결 요청을 큐에 넣습니다. 성공시 0, 오류시 -1을 반환합니다.
- accept(int fd, sockaddr remote_host, socklen_t addr_length)
- 어떤 컴퓨터에서 이 컴퓨터로 연결할때 연결을 받아들입니다. 함수 이름이 말해주고 있죠.
연결된 원격 컴퓨터의 정보는 remote_host에 저장됩니다. 오류시에 -1을 반환합니다.
- send(int fd, void* buffer, size_t n, int flags)
- buffer를 소켓 파일 디스크립터인 fd로 전송합니다. 보낸 바이트수를 반환하며 실패시 -1을 반환합니다.
- recv(int fd, void* buffer, size_t n, int flags)
- send함수와 사용법이 거의 비슷합니다. n바이트를 buffer로 읽습니다. 성공시 받은 바이트수를 반환하며 실패시 -1을 반환합니다.
[출처] : https://reakwon.tistory.com/81
번호별 개인적으로 받아들이고 정리한부분
-
소켓이라는 객체를 만드는데 필요한 생성자. 안에 들어가는 파라미터는 도메인 타입 프로토콜? ==> 근데 우리가 배운건 InetAddress형의 변수인 address와 포트번호를 넣는 형식. 여러가지 형식이 있는 것 같다. 실제로 Socket 클래스에 가서 확인해보니 생성자가 매우 많음.
-
원격 호스트라는 개념 자체를 모르겠음 ==>