Wednesday, May 21, 2008

Socket, create

기왕 공부하는거 socket도 복습해보자.

소켓은 도메인에 따라 unix socket, network socket 으로 구분하는데 앞의 것은 한 host 내에서 사용할 때이고 뒤의 것은 여러 호스트에 걸친경우 이다.

소켓은 타입에 따라 datagram 이냐, stream이냐의 차이를 가지는데 데이터를 일정한 단위로 나누어 보내냐 혹 stream 형태로 연결을 유지하면서 보내냐의 차이다(거의 UDP, TCP의 차이).

소켓은 아래처럼 간단하게 만들어진다.

#include <sys/socket.h>

int socket(int domain, int type, int protocol);
// domain AF_UNIX (unix socket),
// AF_INET(network socket) (AF = PF)
// type SOCK_STREAM
// SOCK_DGRAM
// SOCK_RAW
// protocol IPPROTO_IP (0) (for both)
// IPPROTO_TCP (for SOCK_STREAM)
// IPPROTO_UDP (for SOCK_DGRAM)
// IPPROTO_ICMP
// ex.
if ((sd = socket(AF_INET, SOCK_STREAM, IPPROTO_IP)) == -1)
fprintf(stderr, "error socket\n");
if ((sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP)) == -1)
fprintf(stderr, "error socket\n");


SOCK_DGRAM(UDP)이나 SOCK_STREAM(TCP)이나 IP 아래에서 동작하므로, 위처럼 IPPRORO_IP를 가지고 생성할 수 있다.

No comments:

Post a Comment