Microsoft PowerPoint UnixNetProg.ppt [호환 모드]

Size: px
Start display at page:

Download "Microsoft PowerPoint UnixNetProg.ppt [호환 모드]"

Transcription

1 유닉스네트워크프로그래밍 Unix Network Programming, 2nd Ed., W. Richard Stevens, Prentice Hall PTR, 한국어판 Unix Network Programming, 2nd Ed., W. Richard Stevens 저, 김치하, 이재용편역, 교보문고, 컴퓨터네트워크프로그래밍, 개정판, 김화종, 홍릉과학출판사, 예제로쉽게작성하는 LINUX 네트워크베스트프로그래밍, 雪田修一저, 권용진역, 도서출판인터비젼, 2000.

2 12.7 소켓 프로세스간상호양방향통신방식 네트워크를통한통신가능 소켓을통한프로세스통신은클라이언트- 서버모델 (client-server model) 에기초 활용 한기계에존재하는파일을다른기계에서프린트 한기계에서다른기계로파일을전송 유닉스네트워크프로그래밍 2

3 OSI 7 Layers & Internet t protocol suite Layer 7 Application Layer 6 Presentation Application Layer 5 Layer 4 Session Transport TCP UDP sockets XTI Layer 3 Network IPv4, IPv6 Layer 2 Data Link Device Driver and Layer 1 Physical Hardware OSI 7 Layers Model * OSI : Open System Interconnection Internet protocol suite 유닉스네트워크프로그래밍 3

4 인터넷에서의데이터흐름 Application Transport Network Link 중간주소를 local network 주소로변환 도착주소 (IP) 전달 세그먼트분할+ 포장+ 도착주소 중간주소붙여포장 ( 도착주소 or라우터주소 ) 포장벗겨도착주소확인후아니면다시포장 + 새중간주소 ( 옆의다른라우터주소 ) Network Link 포장벗겨위로전달 Network Link Application 메시지재구성 Transport 포장벗겨도착주소확인맞으면위로전달 Network 포장벗겨위로전달 Link 유닉스네트워크프로그래밍 4

5 연결형시스템호출 연결형소켓 (connection oriented protocol : TCP(Transmission Control Protocol)) [ 참고 P535] 서버 (server) socket( ) bind( ) 클라이언트 (client) socket( ) listen( ) accept( ) 클라이언트로부터연결이올때까지대기 연결설정 Data 요청 connect( ) write( ) read( ) read( ) Data 응답 프로세스에요청 write( ) 유닉스네트워크프로그래밍 5

6 비연결형소켓시스템호출 비연결형소켓 (connectionless protocol : UDP(User Datagram Protocol)) 서버 (server) socket() bind() 클라이언트 (client) recvfrom() socket() blocks until data received from a client bind() data(request) sendto() process request data(reply) write() read() 유닉스네트워크프로그래밍 6

7 12.7 소켓 소켓연결과정 서버가명명된소켓을생성 서버 이름 클라이언트가명명되지않은소켓을생성하고, 연결을요청 서버 이름 클라이언트 클라이언트가연결됨. 서버는원래명명된소켓을유지 서버 이름 클라이언트 완결된연결 유닉스네트워크프로그래밍 7

8 12.7 소켓 여러종류의소켓 다음의속성에따라분류 도메인 (domain) 유형 (type)» 서버와클라이언트소켓이존재하는장소를지칭» 클라이언트와서버사이에존재할수있는통신의유형을결정 프로토콜 (protocol)» 소켓유형을구현하는저급의수단을명시 도메인 : 서버와클라이언트소켓이존재하는장소를지칭 AF : Address Family AF_UNIX AF_INET AF_NS» 클라이언트와서버는동일한기계에존재해야함» 클라이언트와서버는인터네트어느곳에서든지존재할수있음» 클라이언트와서버는 XEROX 네트워크시스템에존재할수있음 유닉스네트워크프로그래밍 8

9 12.7 소켓 유형 : 클라이언트와서버와의통신의유형결정 SOCK_STREAM SOCK_DGRAM» 일련번호가붙은, 신뢰적, 양방향연결에기초한바이트의가변길이의스트림» 전보와비슷한, 무연결, 비신뢰적고정길이의메시지 SOCK_SEQPACKET SOCK_RAW» 일련번호가붙은, 신뢰적, 양방향연결에기초한바이트의고정길이패킷» 내부네트워크프로토콜과인터페이스에대한접근제공 유닉스네트워크프로그래밍 9

10 12.7 소켓 [ 참고 ] 도메인과소켓유형간의모든조합이허용되지는않음 AF_UNIX AF_INET AF_NS SOCK_STREAM Yes TCP SPP SOCK_DGRAM Yes UDP IDP SOCK_RAW IP Yes SOCK_SEQPACKET SPP» Yes 라표시된부분은채울약어가없으며,» 빈부분은구현되지않은부분이다. 유닉스네트워크프로그래밍 10

11 12.7 소켓 소켓프로그램작성 소켓사용시아래의파일포함» /usr/include/sys/types.h» /usr/include/sys/socket.h 포함 소켓도메인에따라헤더파일포함 도메인 AF_UNIX AF_INET 추가할헤더파일 /usr/include/sys/un.h /usr/include/netinet/in.h /usr/include/arpa/inet.h /usr/include/netdb.h 소스프로그램 : P525 유닉스네트워크프로그래밍 11

12 12.7 소켓 서버 명명된소켓을생성하고, 생성한소켓으로의 연결을수용하는것을책임지는프로세스 다음의순서대로시스템호출을사용 명칭의미 socket bind listen accept 명명되지않은소켓을생성 소켓에이름을부여 대기중인연결의최대수를명시 클라이언트로부터의소켓연결을수용 유닉스네트워크프로그래밍 12

13 12.7 소켓 소켓의생성 : socket( ) socket( ) 을사용하여소켓생성 동작 System call: int socket ( int domain, int type, int protocol )» 명시된 domain, type, protocol 의명명되지않은소켓을생성» 소켓생성성공시 : 새로생성된소켓에연관된파일기술자 (serverfd) 를 반환» 소켓생성실패시 : 파일기술자 (serverfd) 에 -1 반환 serverfd = socket(af_unix, SOCK_STREAM, STREAM DEFAULT_PROTOCOL); 유닉스네트워크프로그래밍 13

14 12.7 소켓 소켓에이름부여 : bind( ) 서버가명명되지않은소켓생성시, bind( ) 를사용하여이름부여 성공시 0 을반환, 실패시 -1 을반환 동작 System call: int bind (intfd fd, struct sockaddr* address, int addresslen )» address에저장된소켓주소를가지는파일기술자 fd를명명되지않은소켓에연관시킴» addresslen는주소구조체의길이를포함» 입력될주소의유형과값은소켓도메인에의함 유닉스네트워크프로그래밍 14

15 12.7 소켓 도메인에따른구조체항목 AF_UNIX 도메인» sockaddr_un 구조체의항목 항목값부여 sun_family AF_UNIX sun_path 소켓의완전한경로이름으로, 최대길이는 180 문자 AF_INET 도메인» sockaddr_in 구조체의항목 항목값부여 sin_family AF_INET sin_port 인터네트소켓의포트번호 sin_addr in_addr 유형의구조체 sin_zero 공백상태로남겨둔다 유닉스네트워크프로그래밍 15

16 소켓구조 /* Definitions for UNIX IPC domain /usr/include/sys/un.h s/ n */ struct sockaddr_un { sa_family_t sun_family; /* AF_UNIX */ char sun_path[108]; /* path name (gag) */ }; /* Socket address, internet style /usr/include/netinet/in.h */ struct sockaddr_in { sa_family_t sin_family; in_port_t t sin_port; struct in_addr sin_addr; #if!defined(_xpg4_2) defined( EXTENSIONS ) char sin_zero[8]; #else unsigned char sin_zero[8]; #endif /*!defined(_xpg4_2) defined( EXTENSIONS ) */ }; struct hostent { char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_addrtype; /* host address type */ int h_length; /* length of address */ char **h_addr_list; /* list of addresses from name server */ #define h_addr h_addr_list[0] /* address, for backward compatiblity */ }; 유닉스네트워크프로그래밍 16

17 소켓구조 /* Internet address /usr/include/netinet/in.h * This sdefinition to contains sobsoete obsolete fields edsfor compatibility patb ty * with SunOS 3.x and 4.2bsd. The presence of subnets renders * divisions into fixed fields misleading at best. New code * should use only the s_addr field. */ #if!defined(_xpg4_2) defined( EXTENSIONS ) #define _S_un_b S_un_b #define _S_un_w S_un_w #define _S_addr S_addr #define _S_un S_un #endif /*!defined(_xpg4_2) defined( EXTENSIONS ) */ typedef uint32_t in_addr_t; typedef unsigned int uint32_t; t struct in_addr { union { struct { uchar_t s_b1, s_b2, s_b3, s_b4; } _S_un_b; struct { ushort_t t s_w1, s_w2; } _S_un_w; #if!defined(_xpg4_2) defined( EXTENSIONS ) uint32_t _S_addr; #else in_addr_t _S_addr; #endif /*!defined(_xpg4_2) defined( EXTENSIONS ) */ } _S_un; #define s_addr _S_un._S_addr /* should be used for all code */ #define s_host _S_un._S_un_b.s_b2 /* OBSOLETE: host on imp */ #define s_ net _ S_ un. _ S_ un_ b.s_ b1 /* OBSOLETE: network */ #define s_imp _S_un._S_un_w.s_w2 /* OBSOLETE: imp */ #define s_impno _S_un._S_un_b.s_b4 /* OBSOLETE: imp # */ #define s_lh _S_un._S_un_b.s_b3 /* OBSOLETE: logical host */; 유닉스네트워크프로그래밍 17

18 10.7 소켓 소켓큐생성 : listen( ) 대기중인소켓연결의최대수를명시 만일, 클라이언트가가득차있는큐를소켓에연결하려고한다면, 그연결은거부됨 동작 System call: int listen ( int fd, int queuelength ) 예 ) listen (serverfd, 5); /* 대기중인연결의최대길이 */ 유닉스네트워크프로그래밍 18

19 12.7 소켓 클라이언트수용 : accept( ) 클라이언트의연결요구수용 기술자를반환하며, 실패시에는 -1 반환 accept( ) 가성공시통신에사용될수있는새로운파일 동작 System call: int accept ( int fd, struct sockaddr* address, int addresslen )» address 구조체 : 클라이언트의주소, 보통인터넷연결과관련되어서만사용» addresslen : address에의해서지정되는구조체의크기를포함하는정수 유닉스네트워크프로그래밍 19

20 12.7 소켓 클라이언트 명명되지않은소켓을생성하고, 생성한소켓을명명된서버소켓으로의접속을책임지는프로세스 다음의순서대로시스템호출을사용 명칭 socket( ) connect( ) 명명되지않은소켓을생성 의미 명명되지않은클라이언트소켓을명명된서버소켓에접속 유닉스네트워크프로그래밍 20

21 12.7 소켓 연결하기 : connect( ) 서버의소켓에연결 connect( ) 성공시 0 반환하고, 서버소켓이존재하지않거나, 대기큐 가가득차있으면 -1 반환 동작 System call:int connect( int fd, struct sockaddr* address, int addresslen )» address 구조체내에주소가저장되어있는서버소켓에연결을시도» 연결성공시, fd는서버의소켓과통신하기위해사용» addresslen은주소구조체의크기와동일 유닉스네트워크프로그래밍 21

22 12.7 소켓 유닉스도메인 (AF_UNIX) 소켓 : 명명된소켓생성 Chef/Cook 소스프로그램 $ gcc chef.c o chef lsocket $ gcc chef.c o chef lsocketl k t $ chef & $ cook 인터네트도메인 (AF_INET) 소켓 :IP 주소와 PORT 주소에의해명시 32bit IP 주소와 16bit port 번호필요 인터네트주소종류» s 는지역호스트를의미» 숫자로시작 : A.B.C.D 형식의 IP 주소로가정 소프트웨어에의해서 32bit 의 IP 주소로변환» 문자열입력 : 기호적호스트이름으로가정 소프트웨어에의해 32bit IP 주소로변환 inettime 소스프로그램 : p605 ~ p608 (debugging) $ inettimenew eecs.berkeley.edu edu 유닉스네트워크프로그래밍 22

23 Chef.c #include <stdio.h> #include <signal.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> /* AF_UNIX 소켓용 */ #define DEFAULT_PROTOCOL 0 main() { int serverfd, clientfd, serverlen, clientlen; struct sockaddr_un serverunixaddress; /* 서버주소 */ struct sockaddr_un clientunixaddress; /* 클라이언트주소 */ struct sockaddr* serversockaddrptr; /* 서버주소에대한포인터 */ struct sockaddr* clientsockaddrptr; /* 클라이언트주소에대한포인터 */ /* 좀비를방지하기위해자식 - 죽음시그널은무시 */ signal(sigchld, SIG_IGN); serversockaddrptr kaddpt = (struct (t tsockaddr*) dd*)& &serverunixaddress; serverlen = sizeof(serverunixaddress); clientsockaddrptr = (struct sockaddr*) &clientunixaddress; clientlen = sizeof(clientunixaddress); 유닉스네트워크프로그래밍 23

24 Chef.c (cont) /* 양방향, 디폴트프로토콜의유닉스소켓생성 */ serverfd = socket(af_unix, SOCK_STREAM, DEFAULT_PROTOCOL); serverunixaddress.sun_family = AF_UNIX; /* 도메인유형설정 */ strcpy (serverunixaddress.sun_path, "recipe"); /* 이름설정 */ unlink( "recipe"); /* 이미존재한다면, 파일제거 */ bind(serverfd, serversockaddrptr, serverlen); /* 파일생성 */ listen(serverfd, 5); /* 대기중인연결의최대길이 */ while(1) /* 무한루프 */ { /* 클라이언트연결받기 */ clientfd = accept(serverfd, clientsockaddrptr, &clientlen); printf(" Server called! "); if (fork() == 0) /* 조리법을전송할자식생성 */ { writerecipe(clientfd); /* 조리법전송 */ close(clientfd); /* 소켓닫기 */ exit(/* EXIT_SUCCESS */ 0); /* 종료 */ } else close(clientfd); /* 클라이언트기술자닫기 */ } } writerecipe (int fd) { static char* line1 = "spam, spam, spam, spam, spam,"; static char* line2 = "spam, and spam."; write (fd, line1, strlen(line1) + 1); /* 첫째줄쓰기 */ write (fd, line2, strlen(line2) + 1); /* 두번째줄쓰기 */ } 유닉스네트워크프로그래밍 24

25 Cook.c #include <stdio.h> #include <signal.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #define DEFAULT_PROTOCOL 0 main() { int clientfd, serverlen, result; struct sockaddr_un serverunixaddress; struct sockaddr* serversockaddrptr; serversockaddrptr = (struct sockaddr*) &serverunixaddress; serverlen = sizeof(serverunixaddress); /* 양방향, 디폴트프로토콜의유닉스소켓생성 */ clientfd = socket(af_unix, SOCK_STREAM, STREAM DEFAULT_PROTOCOL); serverunixaddress.sun_family = AF_UNIX; /* 서버도메인 */ strcpy( serverunixaddress.sun_path, "recipe"); /* 서버이름 */ do { /* 서버와연결되기까지루프 */ result = connect (clientfd, serversockaddrptr, serverlen); if(result == -1) sleep(1); /* 대기후다시시도 */ } while(result == -1); 유닉스네트워크프로그래밍 25

26 Cook.c (cont) readrecipe(clientfd); /* 조리법읽기 */ close(clientfd); /* 소켓닫기 */ exit(/* EXIT_SUCCESS */ 0); /* 수행끝 */ } readrecipe(int fd) { char str[200]; } while(readline(fd, str)) /* 입력끝까지줄읽기 */ printf("%s\n", str); /* 소켓으로부터줄출력 */ /*********************************************/ readline(int fd, char* str) { int n; } do { n = read(fd,str,1); } while(n > 0 && *str++!= NULL); return (n > 0); 유닉스네트워크프로그래밍 26

27 inettime.c: 인터네트시간청취 #include <stdio.h> #include <signal.h> #include <ctype.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> /* For AFINET sockets */ #include <arpa/inet.h> #include <netdb.h> #define DAYTIME_PORT 13 /* Standard port o */ #define DEFAULT_PROTOCOL 0 unsigned long promptforinetaddress (); unsigned long nametoaddr (); main () { int clientfd; /* Client socket file descriptor */ int serverlen; /* Length of server address structure */ int result; /* From connect () call */ struct sockaddr_in serverinetaddress; /* Server address */ struct sockaddr* serversockaddrptr; /* Pointer to address */ unsigned long inetaddress; /* 32-bit IP address */ /* Set the two server variables */ serversockaddrptr = (struct sockaddr*) &serverinetaddress; 유닉스네트워크프로그래밍 27

28 inettime.c: 인터네트시간청취 (cont.) serverlen = sizeof (serverinetaddress); /* Length of address */ while (1) /* Loop until break */ { inetaddress = promptforinetaddress (); /* Get 32-bit IP */ if (inetaddress == 0) break; /* Done */ /* Start by zeroing out the entire address structure */ bzero ((char*)&serverinetaddress,sizeof(serverinetaddress)); serverinetaddress.sin_family = AF_INET; /* Use Internet */ serverinetaddress.sin_addr.s_addr sin s = inetaddress; /* IP */ serverinetaddress.sin_port = htons (DAYTIME_PORT); /* Now create the client socket */ clientfd = socket (AF_INET, SOCK_STREAM, DEFAULT_PROTOCOL); do /* Loop until a connection is made with the server */ { result = connect (clientfd,serversockaddrptr,serverlen); if (result == -1) sleep (1); /* Try again in 1 second */ } while (result == -1); readtime (clientfd); /* Read the time from the server */ close (clientfd); /* Close the socket */ } exit (/* EXIT_SUCCESS */ 0); } 유닉스네트워크프로그래밍 28

29 inettime.c: 인터네트시간청취 (cont.) unsigned long promptforinetaddress () { char hostname [100]; /* Name from user: numeric or symbolic */ unsigned long inetaddress; /* 32-bit IP format */ /* Loop until quit or a legal name is entered */ /* If quit, return 0 else return host's IP address */ do { printf ("Host name (q = quit, s = self): "); scanf ("%s", hostname); /* Get name from keyboard */ if (strcmp (hostname, "q") == 0) return (0); /* Quit */ inetaddress = nametoaddr (hostname); /* Convert to IP */ if (inetaddress == 0) printf ("Host name not found\n"); } while (inetaddress == 0); } unsigned long nametoaddr (name) char* name; { char hostname [100]; struct hostent* hoststruct; struct in_addr* hostnode; /* Convert name into a 32-bit IP address */ /* If name begins with a digit, assume it's a valid numeric */ /* Internet address of the form A.B.C.D and convert directly */ if (isdigit (name[0])) return (inet_addr (name)); 유닉스네트워크프로그래밍 29

30 inettime.c: 인터네트시간청취 (cont.) if (strcmp (name, "s") s) ==0)/* Get host name from database */ { gethostname (hostname,100); printf ("Self host name is %s\n", hostname); } else /* Assume name is a valid symbolic host name */ strcpy (hostname, name); /* Now obtain address information from database */ hoststruct = gethostbyname (hostname); if (hoststruct == NULL) return (0); /* Not Found */ /* Extract the IP Address from the hostent structure */ hostnode = (struct in_addr*) hoststruct->h_addr; /* Display a readable version for fun */ printf ("Internet Address = %s\n", inet_ntoa (*hostnode)); return (hostnode->s >s_addr); /* Return IP address */ } readtime (fd) int fd; { char str [200]; /* Line buffer */ printf ("The time on the target port is "); while (readline (fd, str)) /* Read lines until end-of-input */ printf ("%s\n", str); /* Echo line from server to user */ } 유닉스네트워크프로그래밍 30

31 inettime.c: 인터네트시간청취 (cont.) readline (fd, str) int fd; char* str; /* Read a single NEWLINE-terminated line */ { int n; do /* Read characters until NULL or end-of-input */ { } n=read(fd (fd, str, 1);/* Read one character */ } while (n > 0 && *str++!= '\n'); return (n > 0); /* Return false if end-of-input */ 유닉스네트워크프로그래밍 31

32 12.7 소켓 인터네트클라이언트 소켓도메인 : AF_INET 소켓주소구조체 (sockaddr_in) 의 4항목 인터네트서버 sin_family : 소켓의도메인으로, AF_INET 로설정 sin_port : 포트번호지정 sin_addr : 클라이언트 / 서버의 32bit IP 주소 sin_zero : 삽입구로, 공백상태로남겨둠 소켓주소구조체의항목은클라이언트항목과같게 sin_port 항목은 INADDR_ANYANY 로설정, 이것은 어떠한입력클라이언트요구들 도받아들인다 는것을의미 struct sockaddr_in serverinetaddress; /* 서버인터네트주소 */ serverinetaddress.sin_family il = AF_INET; /* 인터네트도메인 */ serverinetaddress.sin_addr.s_addr = htonl(inaddr_any); serverinetaddress.sin_port = htons(port); /* 서버포트번호 */ /* 모두받아들임 */ 유닉스네트워크프로그래밍 32

33 12.7 소켓 Library call: unsigned long inet_addr(char* string) A.B.C.D 형식의 string 에해당하는 32bit 주소로변환 system call: int gethostname(char* name, int namelen) 길이가 namelen 인 name 이가리키는문자배열은지역호스트이름과동일한 NULL로끝나는문자열로설정 Library call: struct t hostent* t* gethostbyname(char* tb h name) /etc/hosts 파일탐색하여, 문자열 name과연관된파일엔트리로묘사하는구조체 hostent 를가리키는포인터로반환 만일, name이 /etc/hosts 파일에서발견되지않으면 NULL반환 유닉스네트워크프로그래밍 33

34 12.7 소켓 Library call: char* *inet_ntoa(struct t t tin_addr address) 인수로 in_addr형의구조체를취하고, A.B.C.D 형식으로주소를묘사하는문자열에대한포인터를반환 Library call: void bzero(char* buffer, int length) 크기가 length 인 buffer 를 0(ASCII NULL) 로채움 Library call: unsigned long htonl(unsigned long hostlong) 호스트형식인 unsigned long 유형의 hostlong 과동등한네트워크형식을반환 Library call: unsigned short ntohs(unsigned long hostlong) 네트워크형식인 unsigned short 유형의 networkshort와동등한호스트형식을반환 유닉스네트워크프로그래밍 34

35 12.7 소켓 인터네트서버 소켓주소구조체의항목은클라이언트항목과같게 sin_port 항목은 INADDR_ANYANY 로설정, 이것은 어떠한입력클라이언트 요구들도받아들인다 는것을의미 struct sockaddr_in serverinetaddress; /* 서버인터네트주소 */ serverinetaddress.sin_family = AF_INET; /* 인터네트도메인 */ serverinetaddress.sin e ess.s addr.s_addr = htonl(inaddr _ ANY); /* 모두받아들임 */ serverinetaddress.sin_port = htons(port); /* 서버포트번호 */ 유닉스네트워크프로그래밍 35

36 IP 주소변환의세가지방법및변환함수 aaa.bbb.ccc.ddd: : csblade.incheon.ac.kr: : 도메인네임 : IP 주소 (binary) : dotted decimal gethostbyname( ) inet_addr( ) gethostbyaddr( ) inet_ntoa( ) 유닉스네트워크프로그래밍 36

37 파일기술자와소켓기술자 ( 소켓번호 ) 기술자테이블 파일또는정보구조체 ( 파일 ) 파일기술자또는 3 pointer 소켓기술자 4 pointer ( 파일 ) 5 ( 소켓 ) pointer family:pf_inet service :SOCK_STREAM STREAM local IP: local lport: remote IP: remote port: : : 유닉스네트워크프로그래밍 37

38 응용프로그램과소켓,TCP/IP 의관계 연결형서비스 비연결형서비스 응용 1 응용 2 응용 3 응용 4 fd=3 sd=4 sd=3 sd=3 sd=3 응용프로그램 ( 소켓번호 ) 소켓 층 TCP UDP ( 포트번호 ) 트랜스포트계 TCP/IP I P 인터넷계층 (IP 주소 ) 네트워크 fd :File Descriptor IP:Internet Protocol sd:socket Descriptor TCP:Transmission Control Protocol UDP:User Datagram Protocol 유닉스네트워크프로그래밍 38

39 포트번호 (Port Number) 16- 비트포트번호 하나이상의프로세스가한꺼번에 TCP나 UDP를사용할수있기위해각사용자프로세스와관련된데이터구분필요 32- 비트 Internet t 주소로는호스트만접촉가능, 특정프로세스가리키는방법필요 1~255 : 미리할당된포트번호 /usr/include/netinet/in.h 에서표준포트 (well-known ports) 확인 ( 예 ) FTP 제공 TCP/IP 포트번호 : BSD : 1~1023 수퍼유저프로세스위해예약 1023 < TCP 의포트번호 < 5000 인터넷한벌 (TCP/IP 또는 UDP/IP) 에서연결을정의하는 5 쌍 규약 (TCP 또는 UDP) 지역호스트의 Internet 주소 (32-비트) 지역포트번호 (16-비트) 상대호스트의 Internet 주소 (32-비트) 상대포트번호 (16-비트) ( 예 ) {tcp, , 1500, , 21} 유닉스네트워크프로그래밍 39

40 inetserver.c : 인터네트서버 /* compile : gcc -o client client.c -lsocket -lnsl */ /* execute ecute : server e */ #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #define PORTNUM 3000 main(int argc, char *argv[]) { int serverfd, clientfd, clilen, childpid; struct sockaddr_in cli_addr, serv_addr; if((serverfd = socket(af_inet, SOCK_STREAM, 0)) < 0){ printf("server: can't open stream socket"); return -1; } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr sin s = htonl(inaddr_any); ANY); /* 어떤호스트의클라이언트도다받아들임 */ serv_addr.sin_port = htons(portnum); /* 서버포트번호 */ if(bind(serverfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) printf("server: can't bind local address"); printf("server is binded\n"); listen(serverfd, 5); 유닉스네트워크프로그래밍 40

41 inetserver.c : 인터네트서버 (cont.) for( ; ; ){ /* Wait for a connection from a client process. * This is an example of a concurrent server. */ clilen = sizeof(cli_addr); clientfd = accept(serverfd, (struct sockaddr *) &cli_addr, &clilen); printf("server called\n"); if((childpid = fork()) < 0){ printf("server: fork error"); exit(0); } else if(childpid == 0){ /* child process */ printf("serverfd = %d, clientfd = %d\n", serverfd, clientfd); /* process the request */ write(clientfd,"hello!",7); close(clientfd); /* close original socket */ return -1; } close(clientfd); /* parent process */ } } 유닉스네트워크프로그래밍 41

42 inetclient.c t : 인터네트클라이언트 /* compile : gcc -o client client.c -lsocket -lnsl */ /* execute : inetclient hostname(or server IP) */ #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #define PORTNUM 3000 main(int argc, char *argv[]) { int clientfd; char str[10]; char* hostaddress; struct sockaddr_in serv_addr; struct hostent* hoststruct; struct in_addr* hostnode; if(argv[1] == NULL){ } printf("usage: inetclient hostname(or server IP)\n"); printf(" (Ex) inetclient isis.inchon.ac.kr(or )\n"); exit(0); 유닉스네트워크프로그래밍 42

43 inetclient.c t : 인터네트클라이언트 (cont.) hoststruct = gethostbyname(argv[1]); if(hoststruct == NULL) return(0); hostnode = (struct in_addr*) hoststruct->h_addr; hostaddress = inet_ntoa(*hostnode); /* Fill in the structure "serv_addr" with the address of the * server that we want to connect with. */ bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr(hostaddress); serv_addr.sin_port = htons(portnum); /*Open a TCP socket (an Internet stream soskcet). */ if((clientfd = socket(af_inet, SOCK_STREAM, 0)) < 0) printf("client: t can't open stream socket"); /* Connect to the server */ if(connect(clientfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) printf("client: can't connect to server"); printf("clientfd = %d\n", clientfd); read(clientfd, str, 10); printf("%s\n", str); close(clientfd); exit(0); 유닉스네트워크프로그래밍 43

44 12.8 인터네트셸 설계 파이프와후면처리기능제공 표준유닉스셸과유사하면서, 인터네트- 명시적기능추가 셸의기능을적합한크기로구성하기위해제한 모든토큰 (token) 은공란 (tab 또는 space) 에의해서분리 파일이름대치는지원되지않음 유닉스네트워크프로그래밍 44

45 12.8 인터네트셸 명령구문 : 표준유닉스셸의명령어구문과유사 <internetshellcommand> = <sequence> [ & ] <sequence> = <pipeline> { ; <pipeline> }* <pipeline> = <simple> { <simple> } <simple> = { <token> }* { <redirection> }* <redirection> = <fileredirection> <socketredirection> <fileredirection> = \> <file> >> <file> \< <file> <socketredirection> = <clientredirection> <serverredirection> <clientredirection> <socket> <serverredirection> <socket> <token> = a string of chracters <file> = a valid UNIX pathname <socket> = either a UNIX pathname ( UNIX domain socket ) or an Internet socket name of the form hostname.port# 유닉스네트워크프로그래밍 45

46 12.8 인터네트셸 인터네트셸시작하기 내장명령어 인터네트셸실행파일이름 : ish 인터네트셸프롬프트 : 의문부호 (?) ish 시작시자신을호출한셸에서 $PATH 환경변수를상속받음» $PATH 값은내장명령어 setenv 를사용해변경가능» 인터네트셸종료시 : control-d 내장명령어 echo { <token> }* cd path getenv name setenv name value 기능터미널에 token을에코 (echo) 셸의작업디렉토리를 path 로변경환경변수 name의값을표시환경변수 name의값을 value로설정 소스프로그램 : P624~648 유닉스네트워크프로그래밍 46

47 소켓응용프로그램 인터넷토크프로그램 netprog의 talk_server.c talk_client.c 소스코드참조 실행 % talk_server 포트번호 % talk_client 서버호스트IP주소포트번호 인터넷채팅프로그램 하나의프로세스가채팅참가신청처리와클라이언트들의통신처리를다할수있도록 accept() 또는 read() 에서계속기다리는동기 (synchronous, blocking) 모드대신 select() 시스템호출을이용하여소켓을비동기 (asynchronous, non-blocking) 모드로이용 netprog의 chat_server.c chat_client.c 소스코드참조 실행 % chat_server 포트번호 % chat_client 서버호스트IP주소포트번호 유닉스네트워크프로그래밍 47

48 select() select() 소켓에서발생하는 I/O 변화를기다리다가지정된 /O 변화가발생하면리턴됨 초기소켓 s 와참가한클라이언트들의소켓의 I/O 변화감지 select() 시스템호출형식 int select ( int maxfdp1, /* chleo 파일 ( 및소켓 ) 번호크기 +1 */ fd_set *readfds, /* 읽기상태변화를감지할소켓지정 */ fd_set *writefds, /* 쓰기상태변화를감지할소켓지정 */ fd_set *exceptfds, /* 예외상태변화를감지할소켓지정 */ struct timeval *tvptr); /*select() 시스템호출이기다리는시간 */ FD_ZERO(fd_set _ *fdset) 매크로로모든비트지움 FD_SET(int fd, fd_set *fdset) 매크로로소켓 fd의 fdset 변화를감지하기위해 fdset 중 fd에해당하는비트를 1로지정 FD_ISSET(int fd, fd_set *fdset) 매크로는 fdset 의해당 fd 비트가 1 로지정되어있으면양수값리턴하므로 fd에게 fdset 변화가발생했는지판단 유닉스네트워크프로그래밍 48

49 과제 12 월 7 일까지 문제 1과문제 2 중택일 문제 1: 개선된인터넷채팅스레드버전 채팅서버가임의의클라이언트가채팅에참가하는요청을하면이를채팅참가자리스트에추가하며채팅에참가하고있는클라이언트들이보내오는메시지를모든채팅참가자에게다시방송하는기능을수행해주는 chat_server와 chat_client 인터넷채팅프로그램을스레드버전으로수정하되 chat_server의자식스레드로하여금메시지방송 (broadcast) 기능을수행하게하고, chat_client의두개의자식스레드로하여금메시지송신기능과수신기능을각각수행하게하고, 이채팅프로그램에채팅참가자목록을보여주는?who 명령을추가하라. 문제 2 : 교재 p579 가위, 바위, 보게임 : 제2부 ( 인터넷버전 ) 두명의경기자들이서로다른인터네트기계에서게임을할수있는가위, 바위보게임을작성하라. 이명령을호스트 xx 에서실행 지역포트 5000 사용 $ refree 5000 이명령을호스트 yy에서실행 $ player xx 5000 이명령을호스트 zz에서실행 $ player xx 5000 네트워크프로그램실행시주의사항 포트번호수정해서서버실행 : 5500 < 포트번호 < 5900 실습끝난후반드시서버프로세스종료 : kill -9 프로세스번호 (ps 명령으로알아냄 ) 제출방법 1. Electrical Version 1 csmail.incheon.ac.kr ( ) 의 /home/2009hw/2009ula 또는 2009ulb에자기학번으로숙제방 ( 디렉토리 ) 만들고그안에복사 자신의디렉토리보호권장 : chmod 1700 directoryname 2. Electrical l Version 2 multi.incheon.ac.kr ( 의 /export/home/2009hw/2009ula 또는 2009ulb에자신의학번으로숙제방 ( 디렉토리 ) 만들고그안에복사 자신의디렉토리보호권장 : chmod 1700 directoryname 유닉스네트워크프로그래밍 49

50 X 윈도우프로그램과시스템관리 X 윈도우프로그래밍 /usr/x/demo 실행해보기 puzzle spider xeyes xsol 등 X manager : 에서 30 일버전다운로드 ac Lecture Notes X Window Program 참조 Anonymous ftp multi cd pub/xprog 참조 시스템관리 Lecture Notes System Administration 참조 유닉스네트워크프로그래밍 50

51 오! 유닉스 유닉스는재미있다. 유닉스는사용하기는쉽지만배우기는어렵다. 유닉스의모든것을배우는것은불가능하다. 필요한것과재미있을것같다고생각되는부분에관심을쏟는것이좋다. 유닉스는세련되고영리한사람들을위한도구의집합이다. 수고많이하셨습니다!

10. 시스템 프로그래밍

10.  시스템 프로그래밍 네트워크프로그래밍 Unix Network Programming, 2nd Ed., W. Richard Stevens, Prentice Hall PTR, 1999. 한국어판 Unix Network Programming, Stevens 저, 김치하, 이재용역, 대영사, 1991. 컴퓨터네트워크프로그래밍, 개정판, 김화종, 홍릉과학출판사, 2000. 10.7 소켓

More information

Microsoft PowerPoint - UnixNetProg.ppt [호환 모드]

Microsoft PowerPoint - UnixNetProg.ppt [호환 모드] 유닉스네트워크프로그래밍 Unix Network Programming, 2nd Ed., W. Richard Stevens, Prentice Hall PTR, 1999. 한국어판 Unix Network Programming, 2nd Ed., W. Richard Stevens 저, 김치하, 이재용편역, 교보문고, 1999. 컴퓨터네트워크프로그래밍, 개정판, 김화종,

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 소켓 2 1 소켓 클라이언트 - 서버모델 네트워크응용프로그램 클리이언트 - 서버모델을기반으로동작한다. 클라이언트 - 서버모델 하나의서버프로세스와여러개의클라이언트로구성된다. 서버는어떤자원을관리하고클라이언트를위해자원관련서비스를제공한다. 3 소켓의종류 소켓 네트워크에대한사용자수준의인터페이스를제공 소켓은양방향통신방법으로클라이언트 - 서버모델을기반으로프로세스사이의통신에매우적합하다.

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 13 장소켓 2 13.1 소켓 클라이언트 - 서버모델 네트워크응용프로그램 클리이언트 - 서버모델을기반으로동작한다. 클라이언트 - 서버모델 하나의서버프로세스와여러개의클라이언트로구성된다. 서버는어떤자원을관리하고클라이언트를위해자원관련서비스를제공한다. 3 소켓의종류 소켓 네트워크에대한사용자수준의인터페이스를제공 소켓은양방향통신방법으로클라이언트 - 서버모델을기반으로프로세스사이의통신에매우적합하다.

More information

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드]

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드] 소켓개요 참고문헌 : 컴퓨터네트워크프로그래밍, 김화종, 홍릉과학출판사 Socket 정의 Socket 은 Transport 계층 (TCP 나 UDP) 을이용하는 API 1982 년 BSD 유닉스 41 에서처음소개 윈도우즈의경우 Winsock 제공 JAVA 또한 Socket 프로그래밍을위한클래스제공 Socket Interface 의위치 5-7 (Ses, Pre,

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버

More information

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode] TCP Server/Client Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 TCP Server Program Procedure TCP Server socket() bind() 소켓생성 소켓번호와소켓주소의결합 listen() accept() read() 서비스처리, write()

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용

More information

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt 13 장소켓을이용한통신 (2) 소켓을이용한통신 (2) 함수 - recvfrom - sendto - uname - gethostname - gethostbyname - gethostbyaddr 1 1. 서론 소켓을사용하여비연결형모델로통신을하기위한함수와그외의함수 함수 의미 recvfrom 비연결형모델에서소켓을통해메시지를수신한다. sendto 비연결형모델에서소켓을통해메시지를송신한다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Socket Programming 1 Jo, Heeseung 학습목표 TCP/IP 프로토콜의기본개념 IP 주소와포트번호의개념소켓관련구조체와함수소켓을이용한통신프로그램을작성 2 TCP/IP 개요 TCP/IP 인터넷의표준프로토콜 5계층 (4계층) 으로구성 TCP 와 UDP 의차이 3 IP 주소와호스트명 IP 주소와호스트명 IP 주소 : 인터넷을이용할때사용하는주소로점

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 1 목포해양대해양컴퓨터공학과 UDP 소켓 네트워크프로그램설계 4 장 2 목포해양대해양컴퓨터공학과 목차 제 4장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송신및수신 4.4 UDP 소켓의연결 3 목포해양대해양컴퓨터공학과 UDP 소켓의특징 UDP 소켓의특성 신뢰할수없는데이터전송방식 목적지에정확하게전송된다는보장이없음.

More information

개요

개요 ( 분산통신실습 1) : 소켓 (Sockets) 소켓 : 저수준패킷스트림전송 유닉스소켓 (cseunix.incheon.ac.kr 211.119.245.68 에서프로그램 ) inettime 소스코드참조 ( 실습 ) 시간을 10회반복하여출력하도록프로그램을수정하세요. ( 과제 1-1) 유닉스채팅프로그램채팅서버가임의의클라이언트가채팅에참가하는요청을하면이를채팅참가자리스트에추가하며채팅에참가하고있는클라이언트들이보내오는메시지를모든채팅참가자에게다시방송하는기능을수행해주는

More information

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt 12 장 소켓을이용한통신 (1) 함수 - inet_addr - inet_ntoa - socket - bind - listen - accept - connect - recv -send 1 서론 파이프를사용하여통신을하기위한시스템호출 / 표준라이브러리함수 함수 의미 inet_addr 문자열형태의인터넷주소를바이너리형태로변환한다. inet_ntoa 바이너리형태의인터넷주소를문자열형태로변환한다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Socket Programming 1 Jo, Heeseung 학습목표 TCP/IP 프로토콜의기본개념 IP 주소와포트번호의개념소켓관련구조체와함수소켓을이용한통신프로그램을작성 2 TCP/IP 개요 TCP/IP 인터넷의표준프로토콜 5 계층 (4 계층 ) 으로구성 TCP 와 UDP 의차이 3 IP 주소와호스트명 IP 주소와호스트명 IP 주소 : 인터넷을이용할때사용하는주소로점

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 네트워크프로그래밍 02 장 TCP 소켓 (1) 1 목차 제 2장 TCP 소켓 1. IPv4 TCP 클라이언트 2. IPv4 TCP 서버 3. 소켓의생성과해지 4. 주소지정 5. 소켓에연결 6. 소켓을주소에바인딩하기 7. 클라이언트의연결요청처리 8. 데이터주고받기 9. IPv6의사용 2 소켓통신과정 간략화한소켓통신과정 소켓생성 TCP or UDP 소켓에주소정보할당

More information

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E > 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 소켓 (Socket) (1/2) Socket 이란? 서버와클라이언트가서로특정한규약을사용하여데이터를전송하기위한방식 서버와클라이언트는소켓연결을기다렸다가소켓이연결되면서로데이터를전송 현재네트워크상에서의모든통신의근간은 Socket 이라할수있음 Page 2 1 소켓 (Socket) (2/2)

More information

Microsoft PowerPoint - 06-CompSys-16-Socket.ppt

Microsoft PowerPoint - 06-CompSys-16-Socket.ppt 소켓시스템콜소개 TCP 클라이언트 / 서버프로그래밍 signal(), fork() 시스템콜 TCP 클라이언트 / 서버프로그래밍예 talk_client.c, talk_server.c UDP 클라이언트 / 서버프로그래밍 순천향대학교컴퓨터학부이상정 1 소켓시스템콜소개 순천향대학교컴퓨터학부이상정 2 소켓 (socket) 소켓은 TCP/IP 프로토콜을이용하기위한시스템콜인터페이스

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 1 목포해양대해양컴퓨터공학과 2 장. TCP 소켓 네트워크프로그램설계 2 목포해양대해양컴퓨터공학과 목차 제 2장 TCP 소켓 1. IPv4 TCP 클라이언트 2. IPv4 TCP 서버 3. 소켓의생성과해지 4. 주소지정 5. 소켓에연결 6. 소켓을주소에바인딩하기 7. 클라이언트의연결요청처리 8. 데이터주고받기 9. IPv6의사용 3 목포해양대해양컴퓨터공학과

More information

vi 사용법

vi 사용법 네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o

More information

Microsoft Word - Network Programming_NewVersion_01_.docx

Microsoft Word - Network Programming_NewVersion_01_.docx 10. Unix Domain Socket 105/113 10. Unix Domain Socket 본절에서는 Unix Domain Socket(UDS) 에대한개념과이에대한실습을수행하고, 이와동시에비신뢰적인통신시스템의문제점에대해서분석하도록한다. 이번실습의목표는다음과같다. 1. Unix Domain Socket의사용법을익히고, IPC에대해서실습 2. TCP/IP의응용계층과전달계층의동작을구현및실습

More information

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾ P a 02 r t Chapter 4 TCP Chapter 5 Chapter 6 UDP Chapter 7 Chapter 8 GUI C h a p t e r 04 TCP 1 3 1 2 3 TCP TCP TCP [ 4 2] listen connect send accept recv send recv [ 4 1] PC Internet Explorer HTTP HTTP

More information

<4D F736F F D2034C0E52D554E495820BCD2C4CF20C0C0BFEB20C7C1B7CEB1D7B7A1B9D6>

<4D F736F F D2034C0E52D554E495820BCD2C4CF20C0C0BFEB20C7C1B7CEB1D7B7A1B9D6> 4. UNIX 소켓응용프로그래밍 4.1 소켓의동작모드 소켓의동작모드 blocking, non-blocking, 그리고비동기 (asynchronous) 모드 소켓을처음생성하면 blocking 모드의소켓이생성 blocking 모드소켓 어떤소켓관련시스템콜을호출하였을때네트웍시스템 ( 즉, TCP/IP) 이동작을완료할때까지응용프로세스가멈추어있게 (block) 되는소켓

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 03 장 도메인네임시스템과주소 패밀리 (IPv4-IPv6 서비스 ) 1 목차 제 3 장도메인네임시스템과주소패밀리 3.1 도메인네임주소를숫자주소로매핑하기 3.2 IP 버전에무관한주소-범용코드의작성 3.3 숫자주소에서도메인네임주소획득하기 2 getaddrinfo() 를활용한주소 범용 (Generic) 코드 주소범용 (Generic) 코드란? 주소버전

More information

슬라이드 1

슬라이드 1 Computer Networks Practice Socket 1 DK Han Junghwan Song dkhan@mmlab.snu.ac.kr jhsong@mmlab.snu.ac.kr 2012-3-26 Multimedia and Mobile communications Laboratory Introduction Client / Server model Server

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 소켓프로그래밍기초 IT CookBook, 유닉스시스템프로그래밍 학습목표 TCP/IP 프로토콜의기본개념을이해한다. IP 주소와포트번호의개념을이해한다. 소켓관련구조체와함수를이해한다. 소켓을이용한통신프로그램을작성할수있다. 2/42 목차 TCP/IP 개요 IP 주소와호스트명 포트번호 소켓프로그래밍기초 소켓인터페이스함수 유닉스도메인소켓예제 인터넷소켓예제 3/42 TCP/IP

More information

슬라이드 1

슬라이드 1 Task 통신및동기화 : Socket Chapter #13 강의목차 소켓개요 소켓관련시스템콜 네트워크라이브러리 스트림소켓을이용한프로세스통신 데이터그램소켓을이용한프로세스통신 Unix System Programming 2 소켓 (Socket) 소켓 (Socket) 개요 (1) 프로세스간의통신을위한데이터출입구 파이프도구를일반화 양방향데이터통신을지원 상호연관성이없는프로세스간에통신이가능

More information

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드] - Socket Programming in Java - 목차 소켓소개 자바에서의 TCP 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 Q/A 에코프로그램 - EchoServer 에코프로그램 - EchoClient TCP Programming 1 소켓소개 IP, Port, and Socket 포트 (Port): 전송계층에서통신을수행하는응용프로그램을찾기위한주소

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

SMB_ICMP_UDP(huichang).PDF

SMB_ICMP_UDP(huichang).PDF SMB(Server Message Block) UDP(User Datagram Protocol) ICMP(Internet Control Message Protocol) SMB (Server Message Block) SMB? : Microsoft IBM, Intel,. Unix NFS. SMB client/server. Client server request

More information

자바-11장N'1-502

자바-11장N'1-502 C h a p t e r 11 java.net.,,., (TCP/IP) (UDP/IP).,. 1 ISO OSI 7 1977 (ISO, International Standards Organization) (OSI, Open Systems Interconnection). 6 1983 X.200. OSI 7 [ 11-1] 7. 1 (Physical Layer),

More information

The OSI Model

The OSI Model Advanced Socket Programming Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 다중처리기술 2 다중처리기술 Multitasking Multi-process Multi-thread Multiplexing Polling Selecting Interrupt

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 인터넷프로토콜 02 장 TCP 소켓 목차 제 2 장 TCP 소켓 2.1 IPv4 TCP 클라이언트 2.2 IPv4 TCP 서버 2.3 소켓의생성과해지 2.4 주소지정 2.5 소켓에연결 2.6 소켓을주소에바인딩하기 2.7 클라이언트의연결요청처리 2.8 데이터주고받기 2.9 IPv6 의사용 소켓통신과정 간략화한소켓통신과정 소켓생성 TCP or UDP 소켓에주소정보할당

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)

More information

Microsoft PowerPoint - 03-TCP Programming.ppt

Microsoft PowerPoint - 03-TCP Programming.ppt Chapter 3. - Socket in Java - 목차 소켓소개 자바에서의 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 에코프로그램 - EchoServer 에코프로그램 - EchoClient Q/A 1 1 소켓소개 IP,, and Socket 포트 (): 전송계층에서통신을수행하는응용프로그램을찾기위한주소 소켓 (Socket):

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.

More information

<43B7CE20BECBBEC6BAB8B4C220BCD2C4CFC7C1B7CEB1D7B7A1B9D62E687770>

<43B7CE20BECBBEC6BAB8B4C220BCD2C4CFC7C1B7CEB1D7B7A1B9D62E687770> C 로알아보는 소켓프로그래밍 이현환 (NOON) haonun@gmail.com http://noon.tistory.com Hacking Study Grup E.Y.E -------------------------------------------------------------------- 목차 --------------------------------------------------------------------

More information

TCP.IP.ppt

TCP.IP.ppt TCP/IP TCP/IP TCP/IP TCP/IP TCP/IP Internet Protocol _ IP Address Internet Protocol _ Subnet Mask Internet Protocol _ ARP(Address Resolution Protocol) Internet Protocol _ RARP(Reverse Address Resolution

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 Chap 2. Basic TCP Sockets Chap. 2 Basic TCP Sockets 2.1 IPv4 TCP 클라이언트 2.2 IPv4 TCP 서버 2.3 소켓의생성과해지 2.4 주소지정 2.5 소켓에연결 2.6 소켓을주소와바인딩하기 2.7 클라이언트의연결요청처리 2.8 데이터주고받기 2.9 IPv6의사용

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

슬라이드 1

슬라이드 1 / 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file

More information

Chapter 4 UDP 소켓 사용법

Chapter 4 UDP 소켓 사용법 Chapter 4 UDP 소켓사용법 개요 소켓이란 (Unix 소켓 ) 소켓의구조 소켓의유형 UDP 에대한이해 교재 Chapter 4.1 UDP 클라이언트 교재 Chapter 4.2 UDP 서버 교재 Chapter 4.3 UDP 소켓을이용한 송신및수신 소켓이란? Socket 은통신을위한끝점 (endpoint) 을생성하여파일에대한 open 과유사한방식으로기술자

More information

슬라이드 1

슬라이드 1 1 Computer Networks Practice #1-1 - Socket Programming 이지민 (jmlee@mmlab.snu.ac.kr) 장동현 (dhjang@mmlab.snu.ac.kr) 2011. 9. 14 2 Transport layer 가하는일 Reliability 패킷젂송에오류가생기면잧젂송함으로써마치 오류가나지않는것처럼 싞뢰된젂송을 Application

More information

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

1장. 유닉스 시스템 프로그래밍 개요

1장.  유닉스 시스템 프로그래밍 개요 Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시

More information

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 4 가지중하나. (1) 프로그램수행직후, (2) kill 명령실행직후, (3) 15 #include <signal.

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 4 가지중하나. (1) 프로그램수행직후, (2) kill 명령실행직후, (3) 15 #include <signal. 학번 : 이름 : 1. 다음가정하에서아래프로그램의출력물을예측하세요. 가정 : 부모프로세스의 process id=20100, 자식프로세스의 process id=20101. int glob = 31; /* external variable in initialized data */ char buf[] = "a write to stdout\n"; int main(void)

More information

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 6 가지중하나. (1) 프로그램수행직후, (2) 5 초후 (3) 10 초후 (4) 15 #include <signa

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 6 가지중하나. (1) 프로그램수행직후, (2) 5 초후 (3) 10 초후 (4) 15 #include <signa 학번 : 이름 : 1. 다음가정하에서아래프로그램의출력물을예측하세요. 가정 : 부모프로세스의 process id=10100, 자식프로세스의 process id=10101. char buf[] = "a write to stdout\n"; int var; /* automatic variable on the stack */ pid_t pid; int glob = 31;

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 (Host) set up : Linux Backend RS-232, Ethernet, parallel(jtag) Host terminal Target terminal : monitor (Minicom) JTAG Cross compiler Boot loader Pentium Redhat 9.0 Serial port Serial cross cable Ethernet

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

Network Programming

Network Programming Part 3 Socket Programming for Content Delivery in Multimedia Networks (Unix 기반 ) 유닉스소켓시스템콜 BSD 소켓 API의소개 IP 주소변환설명 소켓을이용한클라이언트및서버프로그램작성방법소개 유닉스시스템콜 signal()

More information

1장. 유닉스 시스템 프로그래밍 개요

1장.  유닉스 시스템 프로그래밍 개요 9 장. 파이프 Unix 프로그래밍및실습 1 강의내용 1 절개요 2 절이름없는파이프 3 절이름있는파이프 http://lily.mmu.ac.kr/lecture/13u2/ch09.pdf 책에나온내용반드시 man 으로확인할것! UNIX, LINUX 등시스템마다차이가있을수있음을반드시인식 2 기본실습 #1 [ 예제 9-1] ~ [ 예제 9-7] ( 각 10점 ) 과제개요

More information

/chroot/lib/ /chroot/etc/

/chroot/lib/ /chroot/etc/ 구축 환경 VirtualBox - Fedora 15 (kernel : 2.6.40.4-5.fc15.i686.PAE) 작동 원리 chroot유저 ssh 접속 -> 접속유저의 홈디렉토리 밑.ssh의 rc 파일 실행 -> daemonstart실행 -> daemon 작동 -> 접속 유저만의 Jail 디렉토리 생성 -> 접속 유저의.bashrc 의 chroot 명령어

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 Chap 3. Of Names and Address Families Chap. 3 Of Names and Address Families 3.1 도메인네임주소를숫자주소로매핑하기 3.2 IP 버전에무관한주소 - 범용코드의작성 3.3 숫자주소에서도메인네임주소획득하기 기존 IPv4 전용, IPv6 전용코드의취약성

More information

SYN flooding

SYN flooding Hacking & Security Frontier SecurityFirst SYN flooding - SYN flooding 공격의원리와코드그리고대응 by amur, myusgun, leemeca 2008. 09. myusgun Agenda 개요...3 원리...3 위협...4 잠깐! - 문서에관하여...4 이문서는...4 Code...4 대응방안...4 소스코드...5

More information

Microsoft PowerPoint - 15-EmbedSW-10-Socket

Microsoft PowerPoint - 15-EmbedSW-10-Socket 10. 소켓개요 TCP 클라이언트 / 서버프로그래밍절차 오드로이드 I/O 소켓프로그램예 순천향대학교컴퓨터공학과이상정 1 소켓 (Socket) 운영체제복습 소켓 (socket) 은통신의극점 (endpoint) 을정의 소켓은 IP 주소와포트번호두가지를접합 (concatenate) 해서구별 두프로세스의네트워크통신에각각하나씩두개의소켓이필요 순천향대학교컴퓨터공학과 2

More information

bn2019_2

bn2019_2 arp -a Packet Logging/Editing Decode Buffer Capture Driver Logging: permanent storage of packets for offline analysis Decode: packets must be decoded to human readable form. Buffer: packets must temporarily

More information

학번 : 이름 1. 다음프로그램실행결과를예측하시오. $./a.out & [1] 7216 $ kill -USR $ kill -USR 아래학생이작성한쓰레드코드의문제점을설명하시오. void* thread_main() { pthread_mutex_t

학번 : 이름 1. 다음프로그램실행결과를예측하시오. $./a.out & [1] 7216 $ kill -USR $ kill -USR 아래학생이작성한쓰레드코드의문제점을설명하시오. void* thread_main() { pthread_mutex_t 학번 : 이름 1. 다음프로그램실행결과를예측하시오. $./a.out & [1] 7216 $ kill -USR1 7216 $ kill -USR2 7216 2. 아래학생이작성한쓰레드코드의문제점을설명하시오. void* thread_main() pthread_mutex_t lock=pthread_mutex_initializer; pthread_mutex_lock(&lock);

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

10.

10. 10. 10.1 10.2 Library Routine: void perror (char* str) perror( ) str Error 0 10.3 10.3 int fd; /* */ fd = open (filename, ) /*, */ if (fd = = -1) { /* */ } fcnt1 (fd, ); /* */ read (fd, ); /* */ write

More information

Network Programming

Network Programming Part 3 Socket Programming (Unix 기반 ) 목차 Socket 의개념 BSD 소켓 API 의소개 Socket 생성및 ID IP 주소변환설명 Socket 사용형태 소켓을이용한클라이언트및서버프로그램작성방법소개 채칭프로그램작성

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 03 장 도메인네임시스템과주소 패밀리 (IPv4-IPv6 서비스 ) 1 목포해양대해양컴퓨터공학과 목차 제 3 장도메인네임시스템과주소패밀리 3.1 도메인네임주소를숫자주소로매핑하기 3.2 IP 버전에무관한주소-범용코드의작성 3.3 숫자주소에서도메인네임주소획득하기 2 목포해양대해양컴퓨터공학과 기존 IPv4 전용, IPv6 전용코드의 취약성 전용주소코드

More information

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode] Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

Microsoft Word - KPMC-400,401 SW 사용 설명서

Microsoft Word - KPMC-400,401 SW 사용 설명서 LKP Ethernet Card SW 사용설명서 Version Information Tornado 2.0, 2.2 알 림 여기에실린내용은제품의성능향상과신뢰도의증대를위하여예고없이변경될수도있습니다. 여기에실린내용의일부라도엘케이일레븐의사전허락없이어떠한유형의매체에복사되거나저장될수없으며전기적, 기계적, 광학적, 화학적인어떤방법으로도전송될수없습니다. 엘케이일레븐경기도성남시중원구상대원동

More information

Microsoft PowerPoint - 09-CE-23-윈도우 소켓

Microsoft PowerPoint - 09-CE-23-윈도우 소켓 순천향대학교컴퓨터학부이상정 1 학습내용 인터넷과 TCP/IP 프로토콜 소켓의생성과해제 소켓주소표현 연결지향소켓프로그래밍 순천향대학교컴퓨터학부이상정 2 인터넷과 TCP/IP 프로토콜 순천향대학교컴퓨터학부이상정 3 인터넷구조의프로토콜계층 인터넷구조의프로토콜계층 응용계층 (application layer) 응용서비스제공 http, ftp, smtp, telnet,

More information

1217 WebTrafMon II

1217 WebTrafMon II (1/28) (2/28) (10 Mbps ) Video, Audio. (3/28) 10 ~ 15 ( : telnet, ftp ),, (4/28) UDP/TCP (5/28) centralized environment packet header information analysis network traffic data, capture presentation network

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

ABC 11장

ABC 11장 12 장고급응용 0 수행중인프로그램 프로세스 모든프로세스는유일한프로세스식별번호 (PID) 를가짐 유닉스에서는 ps 명령을사용하여프로세스목록을볼수있음 12-1 프로세스 $ ps -aux USER PID %CPU %MEM SZ RSS TT STAT START TIME COMMAND blufox 17725 34.0 1.6 146 105 i2 R 15:13 0:00

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

歯9장.PDF

歯9장.PDF 9 Hello!! C printf() scanf() getchar() putchar() gets() puts() fopen() fclose() fprintf() fscant() fgetc() fputs() fgets() gputs() fread() fwrite() fseek() ftell() I/O 2 (stream) C (text stream) : `/n'

More information

Microsoft PowerPoint APUE(Intro).ppt

Microsoft PowerPoint APUE(Intro).ppt 컴퓨터특강 () [Ch. 1 & Ch. 2] 2006 년봄학기 문양세강원대학교컴퓨터과학과 APUE 강의목적 UNIX 시스템프로그래밍 file, process, signal, network programming UNIX 시스템의체계적이해 시스템프로그래밍능력향상 Page 2 1 APUE 강의동기 UNIX 는인기있는운영체제 서버시스템 ( 웹서버, 데이터베이스서버

More information

슬라이드 1

슬라이드 1 23. Sockets Input/Output Operations 일반대학원컴퓨터과학과 최윤기 (filterk7@gmail.com) Connection-oriented Model Client-Server 간통싞전에, 미리핚쌍의소켓을연결해두는개념. socket() 의 type argument 에 SOCK_STREAM 으로지정. TCP(Transmission Control

More information

Microsoft PowerPoint - ch09_파이프 [호환 모드]

Microsoft PowerPoint - ch09_파이프 [호환 모드] 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 파이프 IT CookBook, 유닉스시스템프로그래밍 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 파이프 IT CookBook, 유닉스시스템프로그래밍 학습목표 파이프를이용한 IPC 기법을이해한다. 이름없는파이프를이용해통신프로그램을작성할수있다. 이름있는파이프를이용해통신프로그램을작성할수있다. 2/20 목차 파이프의개념 이름없는파이프만들기 복잡한파이프생성 양방향파이프활용 이름있는파이프만들기 3/20 파이프의개념 파이프 두프로세스간에통신할수있도록해주는특수파일 그냥파이프라고하면일반적으로이름없는파이프를의미

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint - 06-IPAddress [호환 모드]

Microsoft PowerPoint - 06-IPAddress [호환 모드] Chapter 06 IP Address IP Address Internet address IP 계층에서사용되는식별자 32 bit 2 진주소 The address space of IPv4 is 2 32 or 4,294,967,296 netid 와 hostid 로구분 인터넷에서호스트와라우터를유일하게구분 IP Address Structure 2-Layer Hierarchical

More information

Microsoft PowerPoint PythonGUI-socket

Microsoft PowerPoint PythonGUI-socket : 채팅프로그래밍 순천향대학교컴퓨터공학과 이상정 순천향대학교컴퓨터공학과 1 학습내용 인터넷구조 인터넷구성요소 인터넷주소 클라이언트 / 서버구조 소켓프로그래밍소개 파이썬소켓프로그래밍 TCP 클라이언트 / 서버프로그래밍 스레드소개 파이썬스레드 채팅클라이언트 / 서버프로그램 순천향대학교컴퓨터공학과 2 네트워크요소 네트워크가장자리 (edge) 호스트 : 클라이언트와서버

More information

게시판 스팸 실시간 차단 시스템

게시판 스팸 실시간 차단 시스템 오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

hd1300_k_v1r2_Final_.PDF

hd1300_k_v1r2_Final_.PDF Starter's Kit for HelloDevice 1300 Version 11 1 2 1 2 3 31 32 33 34 35 36 4 41 42 43 5 51 52 6 61 62 Appendix A (cross-over) IP 3 Starter's Kit for HelloDevice 1300 1 HelloDevice 1300 Starter's Kit HelloDevice

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

Sena Device Server Serial/IP TM Version

Sena Device Server Serial/IP TM Version Sena Device Server Serial/IP TM Version 1.0.0 2005. 3. 7. Release Note Revision Date Name Description V1.0.0 2005-03-7 HJ Jeon Serial/IP 4.3.2 ( ) 210 137-130, : (02) 573-5422 : (02) 573-7710 email: support@sena.com

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

untitled

untitled 1 hamks@dongguk.ac.kr (goal) (abstraction), (modularity), (interface) (efficient) (robust) C Unix C Unix (operating system) (network) (compiler) (machine architecture) 1 2 3 4 5 6 7 8 9 10 ANSI C Systems

More information

Network seminar.key

Network seminar.key Intro to Network .. 2 4 ( ) ( ). ?!? ~! This is ~ ( ) /,,,???? TCP/IP Application Layer Transfer Layer Internet Layer Data Link Layer Physical Layer OSI 7 TCP/IP Application Layer Transfer Layer 3 4 Network

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 C 기초특강 종합과제 과제내용 구조체를이용하여교과목이름과코드를파일로부터입력받아관리 구조체를이용하여학생들의이름, 학번과이수한교과목의코드와점수를파일로부터입력 학생개인별총점, 평균계산 교과목별이수학생수, 총점및평균을계산 결과를파일에저장하는프로그램을작성 2 Makefile OBJS = score_main.o score_input.o score_calc.o score_print.o

More information

<43B7CE20BECBBEC6BAB8B4C C5EBBDC52E687770>

<43B7CE20BECBBEC6BAB8B4C C5EBBDC52E687770> C 로알아보는 UDP 통신 이현환 (NOON) haonun@gmail.com http://noon.tistory.com Hacking Study Grup E.Y.E -------------------------------------------------------------------- 목차 --------------------------------------------------------------------

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070> #include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0

More information

untitled

untitled Embedded System Lab. II Embedded System Lab. II 2 RTOS Hard Real-Time vs Soft Real-Time RTOS Real-Time, Real-Time RTOS General purpose system OS H/W RTOS H/W task Hard Real-Time Real-Time System, Hard

More information

Microsoft Word doc

Microsoft Word doc TCP/IP 구조 1. I.P 구조설명 2. ARP 구조설명 3. TCP 구조설명 4. UDT 구조설명 5. RIP 구조설명 6. BOOTP 구조설명 7. TFTP 구조설명 destination addr source addr type data CRC 6 6 2 46-1500 4 type 0X0800 IP datagram 2 46-1500 type 0X0806

More information

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS ( PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (http://ddns.hanwha-security.com) Step 1~5. Step, PC, DVR Step 1. Cable Step

More information