본문 바로가기

[+] Information/[-] Network

[2009/06/13] 예제소스(file_server.c, file_client.c, file_server_win.c, file_client_win.c) /* file_server.c */ #include #include #include #include #include #include #include #include #define BUFSIZE 30 void error_handling(char *message); int main(int argc, char **argv) { int serv_sd; int clnt_sd; int fd; char buf[BUFSIZE]; struct sockaddr_in serv_addr; struct sockaddr_in clnt_addr; int clnt_addr_size; int len; if(argc!=2){ printf("Usage : %s \n", argv[0]); exit(1); } /* 접속해오는 클라이언트에게 .. 더보기
[2009/06/13] 소켓 연결의 우아한 종료 1. 입력 및 출력 스트림 - 입력 스트림 : 데이터 수신을 위한 스트림 - 출력 스트림 : 데이터 전송을 위한 스트림 2. 소켓 연결 종료의 문제점 - close, closesocket 함수의 호출 : 입력 출력 스트림 완전 종료. - 일방적인 방식의 완전종료는 경우에 따라서 문제가 될 수 있다. 3. Half-close - Half-close : 입력 및 출력 스트림 중 하나의 스트림만 종료하는 행위. 4. Half-close 기능의 함수 [리눅스] #include int shutdown(int s, in how); 상수값 모드 정의 0 SHUT_RD 입력 스트림 종료 1 SHUT_WR 출력 스트림 종료 2 SHUT_RDWR 입 출력 스트림 종료 5. Half-close 기능의 함수 [윈도우] #in.. 더보기
[2009/06/09] 예제소스(cecho_clienet.c, uecho_client_win.c) /* cecho_clienet.c */ #include #include #include #include #include #include #include int main(int argc, char **argv) { int sock; char message[30]; int str_len; struct sockaddr_in serv_addr; if(argc!=3){ printf("Usage : %s \n", argv[0]); exit(1); } sock=socket(PF_INET, SOCK_DGRAM, 0); memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr(argv[.. 더보기
[2009/06/09] UDP 소켓의 성능향상 1. UDP 소켓에서의 connect 함수의 의미 - TCP 소켓에서의 connect 함수의 의미 1) IP와 Port의 할당. 2) 연결 요청 진행(Three-ay handshaking) - UDP 소켓에서의 connect 함수의 이미 1) IP와 Port의 할당. 참고 : connect 함수 호출을 하지 않으면 IP와 Port는 언제 할당 되는가?(sendto 함수가 호출될때 할당 된다.) - TCP/UDP 소켓 공통적으로 지니는 connect 함수의 의미 1) 커널과 소켓의 연결 생성. 2. 일반적인 UDP 클라이언트 - connect 함수를 호출하지 않는 UDP 클라이언트의 데이터 송 수신. 3. 결론! connect 함수 호출이 주는 이점. - 데이터를 주고 받는 속도가 빨라진다. - TCP 소.. 더보기
[2009/06/09] 예제소스(uecho_server.c, uecho_client.c, becho_server.c, becho_client.c) /* uecho_server.c */ #include #include #include #include #include #include #include #define BUFSIZE 30 void error_handling(char *message); int main(int argc, char **argv) { int serv_sock; char message[BUFSIZE]; int str_len; struct sockaddr_in serv_addr; struct sockaddr_in clnt_addr; int clnt_addr_size; if(argc!=2){ printf("Usage : %s \n", argv[0]); exit(1); } serv_sock=socket(PF_INET, SOCK_DGRAM.. 더보기