본문 바로가기

[+] Information

[2009/05/30] 예제소스(helloworld_server.c) /* helloworld_server.c */ #include #include #include #include #include #include #include void error_handling(char *message); int main(int argc, char **argv) { int serv_sock; int clnt_sock; struct sockaddr_in serv_addr; struct sockaddr_in clnt_addr; int clnt_addr_size; char message[]="Hello World!\n"; if(argc!=2) { printf("Usage : %s \n", argv[0]); exit(1); } serv_sock=socket(PF_INET, SOCK_STREAM.. 더보기
[2009/05/30] TCP 기반 서버의 구현 1. 서버에서의 기본적인 함수 호출 순서 2. '연결 요청 대기 상태'로의 진입 - listen 함수는 전달되는 인자의 소켓을 '서버 소켓'이 되게 한다. - listen 함수는 '연결 요청 대기 큐'를 생성 한다. #include int listen (int s, int backlog); (리눅스) *int s : 서버 소켓 파일 디스크립터. *int backlog : 연결 요청 대기 큐 크기 지정. #include int listen(SOCKET s, int backlog); (윈도우) * SOCKET s : 서버 소켓 파일 핸들. 3. 서버의 역할과 연결요청 대기상태 - 서버 소켓은 일종의 '문지기'이다. 4. 연결요청 수락하기. - 연결요청 대기 큐(Queue)에 존재하는 클라이언트의 연결 요청 .. 더보기
[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/27] 주소 체계와 데이터 정렬 1. Internet Address(IPv4) - 인터넷상에 존재하는 호스트를 구분하기 위한 32비트 주소 체계 * Network ID : 네트워크를 구분짓기 위한 주소. * Host ID : 호스트들을 구분지어주기 위한 주소. - 클래스 Class A : Network ID(1Byte) + Host ID(3Byte) 1) 00000000(0) ~ 01111111(127) ex) 126.1.2.3 = Network ID(126) + Host ID(1.2.3) Class B : Network ID(2Byte) + Host ID(2Byte) 1) 10000000(128) ~ 10111111(191) ex) 184.1.1.2 = Network ID(184.1) + Host(1.2) Class C : Netwo.. 더보기