본문 바로가기

소켓 프로그래밍

[2009/05/30] TCP/IP 프로토콜 스택 1. TCP/IP 프로토콜 스택 2. LINK 계층(Physical) - 물리적인 영역을 담당한다. 3. IP 계층(Network) - 데이터 전송을 담당한다. - 데이터의 순서는 상관하지 않는다. - 데이터의 손실이 일어 날수 있다. - 반드시 전송된다는 보장도 없기 때문에 신뢰성도 없다. 4. TCP/UDP 계층(Transport) 5. Application(Application) - 소켓을 이용한 프로그램의 구현을 의미한다. - 일반적으로 소켓 프로그래밍이라고 하면 Application 계층의 프로토콜을 정의하고 구현하는 것을 말한다. - "Hello World" 서버 / 클라이언트도 Application 프로토콜의 구현이다. - 지금까지 이야기 해 온 내부 구조를 알지 못해도 소켓 프로그래밍이 가.. 더보기
[2009/05/27] 예제소스(endian_conv.c, endian_conv_win.c, inet_ntoa.c, inet_addr.c, bind_sock_win.c, bind_sock.c) /* endian_conv.c */ #include int main(int argc, char **argv) { short host_port_order = 0x1234; short net_port_order; long host_add_order = 0x12345678; long net_add_order; net_port_order = htons(host_port_order); net_add_order = htonl(host_add_order); printf(" Host ordered port : %x \n", host_port_order); printf(" Network ordered port : %x \n\n", net_port_order); printf(" Host ordered Address : %.. 더보기
[2009/05/26] 소켓의 생성과 프로토콜의 설정 1. 프로토콜의 정의 - 컴퓨터(호스트) 상호간의 대화에 필요한 통신 규약 1) 호스트 상호간에는 프로토콜에 대한 이해가 필요. - 프로토콜은 잘 정의되어야 하며, 혼돈의 소지가 있으면 안된다. - 이미 정의 되어 있는 프로토콜도 존재하며, 앞으로 우리도 많은 프로토콜을 설계 할 것이다. 2. 소켓의 생성 - 소켓은 기본적인 통신의 도구이다. - 프로토콜에 독립적이다. - 데이터 전송 타입을 지정 해 줘야 한다. 1) 연결 지향 소켓, 비 연결 지향 소켓 #include #include int socket(int domain, int type, int protocol) 1) int domain : 프로토콜 체계 지정 부분. 프로토콜 체계 정 의 PF_INET IPv4 인터넷 프로토콜 PF_INET6 IP.. 더보기
[2009/5/24] 윈도우즈 기반으로 구현하기 1. 윈속을 위한 헤더 및 라이브러리 설정 - winsock2.h 헤더 파일을 포함 한다. - ws2_32.lib 라이브러리를 링크 시킨다. - 윈속 사용을 위한 라이브러리 초기화 및 해제 * Project -> Setting -> Link -> Object/library modules: 맨끝에 ws2_32.lib를 써준다. 2. 윈속 사용을 위한 라이브러리 초기화 및 해제 - 윈속 관련 라이브러리 초기화 함수. #incldue int WSAStartup( /* 내가 초기화 하고자 원하는 라이브러리 버전. ex) Version 3.4(3 = 주 버전, 4 = 부 버전) 0x0403(16진수, 04 = 부 버전, 03 = 주 버전, 16진수로 라이브러리 버전 전달) */ WORD wVersionReques.. 더보기
[2009/5/24] 예제소스(low_open.c, low_read.c, fd.seri.c) /* low_open.c */ #include #include #include #include #include void error_handling(char *message); int main(void) { int fildes; char buf[] = "Let's go!\n"; /* data.txt라는 이름의 파일 생성 */ fildes = open("data.txt", O_CREAT|O_WRONLY|O_TRUNC); if(fildes == -1) error_handling("open() error!"); printf("생성 된 파일의 파일 디스크립터는 %d 입니다. \n", fildes); /* 생성한 파일에 buf의 내용 전달 */ if(write(fildes, buf sizeof(buf)) == -1.. 더보기