1. header
#include <sys/socket.h>
2. function
int socket(int domain, int type, int protocol);
1) int domain : 통신의 주체를 결정합니다. 아래는 상수값으로, socket.h 에 정의되어있음.
domain |
내용 |
PF_INET, AF_INET |
IPv4 인터넷 프로토콜을 사용합니다. |
PF_INET6, AF_INET6 |
IPv6 인터넷 프로토콜을 사용합니다. |
PF_LOCAL, AF_UNIX |
같은 시스템 내에서 프로세스 끼리 통신합니다. |
PF_PACKET |
Low Level Socket 인터페이스를 이용합니다. |
PF_IPX |
IPX 노벨 프로토콜을 사용합니다. |
AF_UNSPEC |
정의되어있지 않음. |
PF는 프로토콜 패밀리 이며, AF는 주소 패밀리 이다.
PF_ 와 AF_는 같은 상수값을 가지고 있기 때문에 코딩시 어떤 값을 사용하여도 작동하나,
프로토콜 체계를 설정하는 부분은 PF로 주소체계를 설정하는 부분은 AF로 시작하는 상수를 사용하는 것이 바람직하다.
2) int type : 데이터의 전송형태를 지정합니다. 마찬가지로 socket.h 에 정의되어 있음.
type |
내용 |
SOCK_DGRAM |
Datagram을 사용하여 통신. (UDP) |
SOCK_STREAM |
Byte-stream을 사용하여 통신. (TCP) |
SOCK_RAW |
Row-protocol을 사용하여 통신. |
SOCK_SEQPACKET |
Sequenced-packet을 사용하여 통신. |
3) protocol : 통신에 사용할 프로토콜을 지정합니다. 보통은 0을 사용합니다.
4) return :
성공 |
실패 |
소켓 식별자 (int 값) |
-1 |
3. 사용
#include <sys/socket.h>
int main()
{
int sock = socket(AF_INET, SOCK_STREAM, 0);
}
'공부 > LinuxServer' 카테고리의 다른 글
5. 클라이언트의 접속 요청을 허락하고 통신용 소켓 생성 - accept() (2) | 2019.06.10 |
---|---|
4. 클라이언트에서 서버에 연결 요청하기 - connect() (0) | 2019.06.06 |
3. 클라이언트의 접속요청 확인하기 - listen() (0) | 2019.05.30 |
2. 소켓에 정보 지정하기 - bind() (0) | 2019.04.26 |
0. 리눅스 TCP/IP 통신 (0) | 2019.04.26 |