본문 바로가기

네트워크/리눅스 기반 강의

2010년 12월 22일 수요일 시그널 함수 시그널 함수 더보기
2010년 12월 21일 화요일 소켓 옵션을 변경하는 함수(수업중) 소켓의 다양한 옵션 소켓의 타입 변경 #include #include #include #include #include #include int main() { int tcp_sock, udp_sock; int sock_type=-1; socklen_t optlen; int state; optlen=sizeof(sock_type); tcp_sock=socket(PF_INET, SOCK_STREAM, 0); udp_sock=socket(PF_INET, SOCK_DGRAM, 0); printf("SOCK_STREAM : %d \n", SOCK_STREAM); printf("SOCK_DGRAM : %d \n", SOCK_DGRAM); state=getsockopt(tcp_sock, SOL_SOCKET, SO_TY.. 더보기
2010년 12월 21일 화요일 클라이언트 프로그램 작성 절차 TCP(연결형)소켓을 사용하는 클라이언트 프로그램 TCP 클라이언트 프로그램의 작성 절차는 일반적으로 위와 같다. 소켓의 프로토콜 체계를 PF_INET, 서비스타입을 SOCK_STREAM으로 선택 ex) socket(PF_INET, SOCK_STREAM, 0); 클라이언트는 connect를 호출하기 전에 연결하고자하는 서버의 주소를 지정하여야 하는데, IP주소와 PORT를 포함하는 소켓주소 구조체 sockaddr_in을 작성해야한다. 예제는 다음과 같다. struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_falimy=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("12.. 더보기
2010년 12월 15일 수요일 인터넷 주소 변환 & 도메인네임으로 IP주소 알아내기 인터넷 주소 변환 #include #include int main() { char *addr="1.2.3.4"; struct sockaddr_in addr_inet; if(!inet_aton(addr, &addr_inet.sin_addr)) { printf("Conversion error"); } printf("unsigned long address(network ordered : %x \n", addr_inet.sin_addr); return 0; } 위에 소스를 보면 입력값이 1.2.3.4 이다. 출력값과 비교해 보자.#include 인터넷 주소 표현 방식에는 도메인 네임, 32비트 IP주소, 십진수(dotted decimal)등 3가지 방식이 있다. 바이트 순서에는 호스트 바이트 순서와 네트웤 바이.. 더보기
2010년 12월 14일 화요일 UNIX BSD 소켓 시스템 콜 소켓의 개설 통신을 하기위해서는 통신에 사용할 프로토콜(TCP 또는 UDP), 자신의 IP, 자신의 PORT, 상대방의 IP, 상대방의 PORT가 필요하다. 우선 소켓 생성부터 알아보기로 한다. 소스는 아래와 같다. #include #include // 프로토콜 타입 헤더파일 #include // 소켓 헤더 파일 int main() { int tcp_sock; int udp_sock; /* 연결지향 tcp 소켓 생성 */ tcp_sock=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if(tcp_sock == -1) { printf("TCP socket error\n"); } /* 비연결지향 udp 소켓 생성 */ udp_sock=socket(PF_INET, SOCK_DGR.. 더보기