<4D F736F F D2034C0E52D554E495820BCD2C4CF20C0C0BFEB20C7C1B7CEB1D7B7A1B9D6>

Size: px
Start display at page:

Download "<4D F736F F D2034C0E52D554E495820BCD2C4CF20C0C0BFEB20C7C1B7CEB1D7B7A1B9D6>"

Transcription

1 4. UNIX 소켓응용프로그래밍 4.1 소켓의동작모드 소켓의동작모드 blocking, non-blocking, 그리고비동기 (asynchronous) 모드 소켓을처음생성하면 blocking 모드의소켓이생성 blocking 모드소켓 어떤소켓관련시스템콜을호출하였을때네트웍시스템 ( 즉, TCP/IP) 이동작을완료할때까지응용프로세스가멈추어있게 (block) 되는소켓 응용프로그램에서는필요에따라이 blocking 모드의소켓을 non-blocking 모드또는비동기모드로변경하여사용 Non-blocking 모드소켓 소켓관련시스템콜에대하여네트웍시스템이일단결과를바로리턴하여응용프로그램이 block 되지않게하는소켓 소켓관련시스템콜중에 block 될수있는것은 listen(), connect(), accept(), send(), recv(), close() 등 비동기모드 non-blocking 모드에서처럼 block 될수있었던소켓시스템콜에대해서일단리턴을하고시스템콜의해당동작이완료되면비동기적으로 (asynchronously) 그결과를응용프로그램에게알려주는소켓의동작모드 채팅서버와클라이언트프로그램 여러가지 I/O 작업을병행하여처리하는것이필요 select() 시스템콜을사용하여소켓을비동기모드로사용

2 4.2 채팅서버프로그램 채팅서버구조 채팅서버 (chat_server.c) 임의의클라이언트가채팅에참가하는요청을하면이를채팅참 가리스트에추가 채팅에참가하고있는클라이언트들이보내오는메시지를모든 채팅참가자에게다시방송 두가지일을병행하여처리하기위해서새로운클라이언트가접 속될때마다프로세스를만들는 concurrent 서버로구현 처리해야할작업이생길때마다프로세스를만들어나가는방식은프로그램작성은편리하지만시스템자원의활용면이나프로그램의안정적인동작면에서는불리 채팅서버프로그램 chat_server.c 에서는 apparent concurrent 서버구조를사용 concurrent 서버처럼여러클라이언트에게병행하여서비스를제공하면서도프로세스를클라이언트수만큼계속복제하지않는방식 하나의프로세스가여러클라이언트와의통신을담당 Select() 시스템콜의사용 채팅서버프로그램은클라이언트의접속요청을처리하는동시에다른클라이언트들이보내온메시지를모든채팅참가자클라이언트에게전달해야하므로프로세스가어느한곳에멈추어있을수있는 blocking 모드로동작하면안됨 소켓을통한 I/O 를비동기모드로처리하여야하는데이를위하여 select() 시스템콜을사용 apparent concurrent 서버모델을이용한채팅서버의동작 서버는먼저 socket() 을호출하여채팅참가자를접수할소켓을 개설 ( 초기소켓이라부름 ) 하고서자신의소켓주소와 bind() 이초기소켓을대상으로 select() 를호출하여초기소켓에어떤 I/O 변화가생길때까지기다림

3 초기소켓에서처음발생할수있는 I/O 변화는채팅참가자가연결요청을보내왔을때인데이때서버는 accept() 를호출하여새로운참가자접속을처리하고 accept() 가리턴하는소켓번호를참가자리스트 (client_s[]) 에등록 서버는이새로생긴소켓과초기소켓을대상으로하여다시 select() 를호출 select() 함수의기능은소켓에서발생하는 I/O 변화를기다리다가지정된 I/O 변화가감시대상소켓들중하나에서라도발생하면 select() 문이리턴 응용프로그램에서는 select() 가리턴되었을때어떤소켓에서어떤 I/O 변화가발생하였는지를확인하여필요한작업을처리

4 채팅프로그램의전체적인구성 s: 초기소켓, client_s[ ]: 채팅참가자의소켓번호배열 서버는초기소켓 s 를통하여새로운채팅참가자를접수 (accept) 하며새로참가한클라이언트들의소켓번호는배열 client_s[ ] 에들어있게됨 select() 시스템콜 select() 시스템콜의사용문법 int select ( int maxfdp1, /* 최대파일 ( 및소켓 ) 번호크기 + 1 */ fd_set *readfds, /* 읽기상태변화를감지할소켓지정 */ fd_set *writefds, /* 쓰기상태변화를감지할소켓지정 */ fd_set *exceptfds, /* 예외상태변화를감지할소켓지정 */ struct timeval *tvptr); /* select() 시스템콜이기다리는시간 */

5 select() 의첫번째인자 maxfdp1 은 'I/O 변화를감시할총소켓 의개수 +1' 의값을지정 보통현재 open 된소켓번호중가장큰값에 1 을더한값을사용 시스템내에서개설할수있는파일기술자의최대값은 <sys/types.h> 에 FD_SETSIZE 로정의 fd_set(file descriptor set) 타입의인자 readfds, writefds, exceptfds 는각각읽기, 쓰기, 예외상황발생과같은 I/O 변화가 발생하였을때이를감지할대상이되는소켓들을지정하는배열 형구조체 이세가지구조체를통하여어떤소켓에서어떤 I/O 변화발생을감지할지를선택하여지정 마지막인자 tvptr 은 select() 시스템콜이기다리는시간을지정 tvptr 이 NULL 인경우에는지정한 I/O 변화가발생할때까지계속기다리며, 0 인경우에는기다리지않고바로리턴되고, 그외의값인경우에는지정된시간만큼또는도중에 I/O 변화가발생할때까지기다림 fd_set 타입의구조체 (readfds, writefds, exceptfds) 와소켓번호 와의관계 readfds 구조체의소켓번호 0 번과 3 번이 1 로세트되어있으므로키보드나 ( 파일번호 0 번 ), 소켓번호 3 에서어떤데이터가입력되어응용프로그램이이를읽을수있는상태가되면 select() 문은리턴 writefds 에서는소켓번호 1 번과 3 번이 1 로세트되어있으므로파일기술자 1 번 ( 표준출력 ) 이나소켓번호 3 번이 write 를할수있는상태로변하면 ( 예를들면송신버퍼가비워짐 ) select() 문이리턴 각각 fd_set 타입구조체에 I/O 변화를감지할소켓 ( 또는파일 ) 번호

6 를 1 로세트하여 select() 를호출해두면해당조건이만족되는순간 select() 문이리턴 fd_set 를사용하기위한매크로 UNIX 에서는 fd_set 타입의구조체를편리하게처리할수있도록, 예를들면특정소켓의 I/O 변화감지를쉽게선택하거나취소할수있도록매크로를제공 FD_ZERO(fd_set *fdset) *fdset 의모든비트를지운다. FD_SET(int fd, fd_set *fdset) *fdset 중소켓 fd 에해당하는비트를 1 로한다. FD_CLR(int fd, fd_set *fdset) *fdset 중소켓 fd 에해당하는비트를 0 으로한다. FD_ISSET(int fd, fd_set *fdset) *fdset 중소켓 fd 에해당하는비트가세트되어있으면양수값인 fd 를리턴한다. fd_set 구조체생성 select() 를호출하려면먼저 fd_set 구조체를만들어야함 chat_server.c 의경우에는읽기에대한 I/O 변화만확인하면되므로 fd_set 타입의구조체 read_fds 하나만선언 FD_ZERO(&read_fds) 를호출하여 read_fds 의모든소켓번호위치를초기화시킴 I/O 변화에관심을갖는소켓번호 ( 또는파일기술자 ) 들을선택 chat_server.c 에서는클라이언트와의접속요구를처리할초기소켓 s 와각채팅클라이언트마다배정된소켓번호들의배열 client_s[ ] 두가지의소켓이용 FD_SET 를사용하여 I/O 변화를감지할소켓들을선택 fd_set read_fds; FD_ZERO(&read_fds); /* *read_fds 의모든소켓을 0 으로초기화 */ FD_SET(s, &read_fds); /* 초기소켓선택 */ for(i = 0; i < num_chat; i++) /* 모든클라이언트접속소켓선택 */ FD_SET(client_s[i], &read_fds);

7 select() 호출 초기화한 read_fds 를 select() 의두번째인자 ( 즉, 읽기변화감지 용 fd_set) 로지정하고, 쓰기및예외발생에해당하는 fd_set 는 NULL 로지정하여다음과같이함 select(maxnfdsp1, &read_fds, (fd_set *)0, (fd_set *)0, (struct timeval *)0); 첫번째인자 maxnfdspl 은 'I/O 변화를감시할총소켓의개수 +1' 의값으로서현재개설된 ' 최대소켓번호 +1' 을사용 select() 는두가지종류의입력에대하여리턴되므로 select() 가리턴되면어떤입력이발생하였는지를판단하여야하며이를위하여 FD_ISSET 매크로를사용 FD_ISSET 의사용법 매크로 FD_ISSET 는 read_fds 구조체에서소켓번호 s 에서 I/O 변화가있었으면양수값인소켓번호 s 를리턴 FD_ISSET(s, &read_fds); 아래에서 FD_ISSET 실행결과가양수이면클라이언트로부터연결요청 ( 즉, 채팅참가요청 ) 이온것이므로 accept() 를불러채팅참가요청을처리 client_s[ ] 중하나의소켓이세트되었다면어떤채팅참가자가채팅메시지를전송한것이므로이메시지를받아모든참가자에게방송 if (FD_ISSET(s, &read_fds)) { /* 초기소켓 s 에서입력발생 */ clilen =sizeof(client_addr); client_fd = accept(s, (struct sockaddr *)&client_addr, &clilen); /* 클라이언트소켓번호배열 client[] 를차례로검색 */ for(i = 0; i < num_chat; i++) { if (FD_ISSET(client_s[i], &read_fds)) { /* 소켓 client_s[i] 에서채팅메시지수신 */ /* 모든참가자에게채팅메시지방송 */

8 채팅종료 클라이언트가채팅에서탈퇴하려면종료문자 ( 예 : exit) 를전송 서버는종료문자를수신한경우이를확인하고 (exitcheck() 함수사용 ) client_s[ ] 배열에서해당클라이언트의소켓번호를삭제한후채팅참가자수 num_chat 을 1 감소시킴 채팅서버수행결과 # chat_server 4001 대화방서버실행 프로그램주요부분설명 chat_server.c 에서소켓개설 인터넷프로토콜체계 (PF_INET) 를사용하였으며스트림형태의 (TCP) 프로토콜을선택 소켓을만들고소켓에주소를부여하는 (bind) 과정 s = socket(pf_inet, SOCK_STREAM, 0); bzero((char *)&server_addr, sizeof(server_addr)); server_addr.sin_family = PF_INET; server_addr.sin_addr.s_addr = htonl(inaddr_any); server_addr.sin_port = htons(atoi(argv[1])); 소켓주소구조체의내용을널 (NULL) 로초기화하기위하여함수 bzero() 를사용 IP 주소로는현재채팅서버프로그램이실행되는호스트의 IP 주소를 (INADDR_ANY), 그리고서비스를제공할포트번호는서버프로그램실행시사용자가입력한값 ( 예를들면 4001) 을사용 메시지방송기능 어떤클라이언트가보낸메시지를다른모든클라이언트에게전 송하는동작 배열 client_s[] 에는각채팅참가자들과연결되는소켓번호들

9 첫번째 for() 루프는현재채팅에참가하는모든클라이언트를대상으로보내온채팅메시지가있는지검색 두번째 for() 루프에서는채팅메시지를모든클라이언트에게방송 /* 채팅메시지가도착했는지검사 */ for(i = 0; i < num_chat; i++) { if(fd_isset(client_s[i], &read_fds)) { if((n = recv(client_s[i], rline, MAXLINE,0)) > 0) { rline[n] = '\0'; /* 종료문자입력시채팅탈퇴처리 */ if(exitcheck(rline, escapechar, 5) == 1) { shutdown(client_s[i], 2); /* client_s[] 크기조절 */ if (i!= num_chat - 1) client_s[i] = client_s[num_chat - 1]; num_chat--; continue; /* 모든채팅참가자에게메시지방송 */ for(j = 0; j < num_chat; j++) send(client_s[j], rline, n, 0); printf("%s", rline); 토크프로그램 (3 장에서소개 ) 과의차이점 채팅프로그램에서는각채팅참가자 ( 클라이언트 ) 들이키보드에 서입력한문자열만서버로전송하는것이아니라자신 ( 채팅참 가자 ) 의이름을다음과같이메시지앞에붙여서전송 [ 철수 ] hello everybody? 종료문자열확인 클라이언트가채팅을탈퇴하기위하여 exit 와같은종료문자를입력하면서버는이것을찾아내기위하여클라이언트가전송한메시지전체를검색하여종료문자열이들어있는지를확인 chat_server.c 에서는이것을처리하기위하여사용자정의함수

10 exitcheck() 를사용 chat_server.c 프로그램리스트 /* 파일명 : chat_server.c 기능 : 채팅참가자관리, 채팅메시지수신및방송컴파일 : cc -o chat_server chat_server.c readline.c -lsocket -lnsl 실행예 : chat_server */ #include <stdio.h> #include <fcntl.h> #include <stdlib.h> #include <signal.h> #include <sys/socket.h> #include <sys/file.h> #include <netinet/in.h> #define MAXLINE 1024 #define MAX_SOCK 512 char *escapechar = "exit\n"; int readline(int, char *, int); int main(int argc, char *argv[]) { char rline[maxline], my_msg[maxline]; char *start = " 대화방에오신걸환영합니다...\n"; int i, j, n; int s, client_fd, clilen; int nfds; /* 최대소켓번호 +1 */ fd_set read_fds; /* 읽기를감지할소켓번호구조체 */ int num_chat = 0; /* 채팅참가자수 */ /* 채팅에참가하는클라이언트들의소켓번호리스트 */ int client_s[max_sock]; struct sockaddr_in client_addr, server_addr; if (argc < 2) { printf(" 실행방법 :%s 포트번호 \n",argv[0]); printf(" 대화방서버초기화중...\n"); /* 초기소켓생성 */ if ((s = socket(pf_inet, SOCK_STREAM, 0)) < 0) {

11 printf("server: Can't open stream socket."); /* server_addr 구조체의내용세팅 */ bzero((char *)&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(inaddr_any); server_addr.sin_port = htons(atoi(argv[1])); if (bind(s,(struct sockaddr *)&server_addr,sizeof(server_addr)) < 0) { printf("server: Can't bind local address.\n"); /* 클라이언트로부터연결요청을기다림 */ listen(s, 5); nfds = s + 1; /* 최대소켓번호 +1 */ FD_ZERO(&read_fds); while(1) { /* ( 최대소켓번호 +1) 값을갱신 */ if ((num_chat-1) >= 0) nfds = client_s[num_chat-1] + 1; /* 읽기변화를감지할소켓번호를 fd_set 구조체에지정 */ FD_SET(s, &read_fds); for (i=0; i<num_chat; i++) FD_SET(client_s[i], &read_fds); /* select() 호출 */ if (select(nfds, &read_fds, (fd_set *)0, (fd_set *)0,(struct timeval *)0) < 0) { printf("select error\n"); /* 클라이언트연결요청처리 */ if (FD_ISSET(s, &read_fds)) { clilen = sizeof(client_addr); client_fd = accept(s, (struct sockaddr *)&client_addr, &clilen); if (client_fd!= -1) { /* 채팅클라이언트목록에추가 */ client_s[num_chat] = client_fd; num_chat++; send(client_fd, start, strlen(start), 0); printf("%d 번째사용자추가.\n",num_chat); /*- 임의의클라이언트가보낸메시지를모든클라이언트에게방송 - */

12 for (i = 0; i < num_chat; i++) { if (FD_ISSET(client_s[i], &read_fds)) { if ((n = recv(client_s[i], rline, MAXLINE,0)) > 0) { rline[n] = '\0'; /* 종료문자입력시채팅탈퇴처리 */ if (exitcheck(rline, escapechar, 5) == 1) { shutdown(client_s[i], 2); if(i!= num_chat-1) client_s[i] = client_s[num_chat-1]; num_chat--; continue; /* 모든채팅참가자에게메시지방송 */ for (j = 0; j < num_chat; j++) send(client_s[j], rline, n, 0); printf("%s", rline); /* 종료문자확인함수 exitcheck() 는다음의세개의인자를필요로한다 rline: 클라이언트가전송한문자열포인터 escapechar: 종료문자포인터 len: 종료문자의크기 */ int exitcheck(rline, escapechar, len) char *rline; /* 클라이언트가전송한메시지 */ char *escapechar; /* 종료문자 */ int len; { int i, max; char *tmp; max = strlen(rline); tmp = rline; for(i = 0; i<max; i++) { if (*tmp == escapechar[0]) { if(strncmp(tmp, escapechar, len) == 0) return 1; else tmp++;

13 4.3 채팅클라이언트프로그램 프로그램개요 채팅클라이언트프로그램 (chat_client.c) 사용자의입력메시지를서버로전송하고, 서버가보내온모든 메시지를사용자화면에출력 토크클라이언트프로그램 talk_client.c 와유사한동작 talk_client.c 에서는사용자의키보드입력처리와수신메시지출력두가지일을동시에수행하기위해서 fork() 를이용하여두개의프로세스를만들어각프로세스가이두가지일을담당 chat_client.c 에서는 chat_server.c 에서와같이 select() 시스템콜을이용하여소켓을비동기모드로바꾸어두가지입출력을하나의프로세스에서처리하도록구현 chat_client.c 가수행되기 위하여는 채팅 chat_server.c 가서버에서먼저실행되어야함. 서버 프로그램 chat_server.c 가사용하는포트번호와서버의 IP 주소를클라이언트에서알고있어야함. 클라이언트에서는채팅참가자의이름을모든메시지앞에붙여 서서버로전송하여야하기때문에자신의이름을프로그램실행 시입력하여야함 # chat_client server_ip server_port my_name server_ip 는채팅서버의 IP 주소 (dotted decimal) server_port 는채팅서버프로그램 (chat_server.c) 실행시지정한포트번호 my_name 은채팅에서사용할자신의이름 chat_client.c 의실행예 # chat_client 철수

14 접속에성공했습니다.. 대화방에오신걸환영합니다 프로그램주요부분설명 구조체 Name chat_client.c 에서는먼저채팅메시지앞에항상붙여서전송할자신의이름 (argv[3]) 을구조체 Name 에기록 struct Name { char n[20]; /* 채팅에서사용할이름 */ int len; /* 이름의실제크기 */ name; /* 참가자이름을 Name 구조체에기록 */ sprintf(name.n, "[%s]", argv[3]); name.len = strlen(name.n); fd_set 구조체 chat_client.c 에서 select() 를호출하려면먼저 fd_set 구조체를 생성 chat_client.c 에서는읽기에대한 I/O 만확인하면되므로 fd_set 구조체로 read_fds 하나만선언 FD_ZERO(&read_fds) 를호출하여 read_fds 의모든소켓번호를 disable 시킴 I/O 변화에관심을갖는소켓번호 ( 파일기술자 ) 들을세트 chat_client.c 에서는키보드입력을위한파일기술자 0 과서버와접속되어있는소켓 s 두개의파일기술자가있음 FD_SET 이용방법 fd_set read_fds; /* 읽기변화를감지하기위한 fd_set 구조체선언 */ FD_ZERO(&read_fds) /* 초기화 */ FD_SET(0, &read_fds); /* 키보드입력용파일기술자 (0) 세트 */

15 FD_SET(s, &read_fds); /* 서버와연결된소켓번호 (s) 세트 */ select() 호출 read_fds 를 select() 의두번째인자 ( 즉, 읽기변화감지용 fd_set) 로지정 세번째와네번째인자즉, 쓰기및예외발생에해당하는 fd_set 는 NULL 로지정 select() 문의첫번째인자로사용할 ' 최대소켓번호 +1' 의값으 로는 s+1 을사용 select(nfds, &read_fds, (fd_set *)0, (fd_set *)0, (struct timeval *)0); select() 가리턴되었을때, read_fds 내의소켓번호 s 값이세트되어있다면서버에서메시지를보내온것이므로이메시지를읽어화면에출력 파일기술자 0 이세트된경우는자신의키보드입력이발생한것이므로이메시지를서버에게전송 if (FD_ISSET(s, &read_fds)) /* 서버가보내오는메시지를수신하여출력 */ if (FD_ISSET(0, &read_fds)) /* 키보드입력데이터를서버로전송 */

16 4.3.3 chat_client.c 프로그램리스트 /* 파일명 : chat_client.c 기능 : 서버에접속한후키보드의입력을서버에전달하고, 서버로부터오는메시지를화면에출력한다. 컴파일 : cc -o chat_client chat_client.c readline.c -lsocket -lnsl 실행예 : chat_client 사용자 _ID */ #include <stdio.h> #include <fcntl.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <sys/time.h> #define MAXLINE 1024 #define MAX_SOCK 512 char *escapechar = "exit\n"; int readline(int, char *, int); int s; /* 서버와연결된소켓번호 */ struct Name { char n[20]; /* 대화방에서사용할이름 */ int len; /* 이름의크기 */ name; int main(int argc, char *argv[]) { char line[maxline], sendline[maxline+1]; int n, pid, size; struct sockaddr_in server_addr; int nfds; fd_set read_fds; if( argc < 4 ) { printf(" 실행방법 : %s 호스트 IP 주소포트번호사용자이름 \n", argv[0]); /* 채팅참가자이름구조체초기화 */ sprintf(name.n, "[%s]", argv[3]); name.len = strlen(name.n); /* 소켓생성 */ if ((s = socket(pf_inet, SOCK_STREAM, 0)) < 0) { printf("client : Can't open stream socket.\n"); /* 채팅서버의소켓주소구조체 server_addr 초기화 */

17 bzero((char *)&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr(argv[1]); server_addr.sin_port = htons(atoi(argv[2])); /* 연결요청 */ if(connect(s, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { printf("client : Can't connect to server.\n"); else { printf(" 접속에성공했습니다..\n"); nfds = s + 1; FD_ZERO(&read_fds); while(1) { /* selelct() 호출 */ FD_SET(0, &read_fds); FD_SET(s, &read_fds); if(select(nfds, &read_fds, (fd_set *)0, (fd_set *)0, (struct timeval *)0) < 0) { printf("select error\n"); /* 서버로부터수신한메시지처리 */ if (FD_ISSET(s, &read_fds)) { char recvline[maxline]; int size; if ((size = recv(s, recvline, MAXLINE, 0)) > 0) { recvline[size] = '\0'; printf("%s \n", recvline); /* 키보드입력처리 */ if (FD_ISSET(0, &read_fds)) { if (readline(0, sendline, MAXLINE) > 0) { size = strlen(sendline); sprintf(line, "%s %s", name.n, sendline); if (send(s, line, size + name.len, 0)!= (size+name.len)) printf("error : Written error on socket.\n"); if (size == 5 && strncmp(sendline, escapechar, 5) == 0) { printf("good bye.\n"); close(s); /* end of 키보드입력처리 */ /* end of while() */

18 4.4 멀티서버 멀티서버 하나의프로세스에서두가지이상의서비스를동시에제공하거 나, 동일한서비스를두가지이상의프로토콜 ( 즉, TCP 와 UDP) 로 제공하는서버를말함 멀티서버의장점 하나의프로세스가하나의서비스를제공하는것에비해시스템의자원을적게사용하면서동일한서비스를제공 프로그램개요 멀티서버프로그램 multi_server.c 두가지서비스 echo 와 daytime 를제공하기위하여두개의 소켓을사용 echo 서비스는소켓번호 echo_fd 를, daytime 서비스는소켓번호 daytime_fd 를아래와같이만들어사용 /* echo 서비스를위한소켓생성 */ echo_fd = socket(pf_inet, SOCK_STREAM, 0); /* daytime 서비스를위한소켓생성 */ daytime_fd = socket(pf_inet, SOCK_STREAM, 0); 소켓을생성한다음무한루프를돌며클라이언트의서비스요구 를기다림 두가지서비스에대한요청을구분하기위해 select() 시스템콜 을사용 FD_SET 매크로를사용하여소켓 echo_fd 와 daytime_fd 를 fd_set 타입의구조체 read_fds 에지정하며향후에이소켓에서읽기변화가발생하면 select() 문이리턴되도록함

19 while(1) { FD_SET(echo_fd, &read_fds); FD_SET(daytime_fd, &read_fds); select(nfds, &read_fds, (fd_set *)0, (fd_set *)0, (struct timeval *)0); select() 문이리턴되었을때어떤서비스요구가발생하였는지를구분하기위하여 FD_ISSET 매크로를사용 FD_ISSET 는 read_fds 구조체에서해당소켓이세트되어있으면양수값인소켓번호를리턴 /* echo 클라이언트가접속을요구해온경우 */ if(fd_isset(echo_fd, &read_fds)) echo_process(s); /* echo 서비스수행 */ /* daytime 클라이언트가접속을요구해온경우 */ if(fd_isset(daytime_fd, &read_fds)) daytime_process(s); /* daytime 서비스수행 */ echo_process() 구현부분 echo_process() 는 echo 를처리하도록멀티서버에서구현한사용자정의함수로서소켓번호 echo_fd 를함수인자로받으며소켓을통해입력된문자열을그소켓으로그대로출력 int echo_process(int echo_fd) { while((len = read(echo_fd, buf, sizeof(buf)))!= 0) write(echo_fd, buf, len); return 0; daytime_process() 구현부분 소켓번호 daytime_fd 를인자로받으며, time() 시스템콜을이용하여시스템의현재시각을얻음 ctime() 시스템콜을이용하여아래와같은형태의시각을나타내

20 는문자열로변경한후이문자열을클라이언트로전송 Wed May 21 12:45: Int daytime_process(int daytime_fd) { time(&now); sprintf(buf, "%s\n", ctime(&now)); write(daytime_fd, buf, strlen(buf)); return 0; multi_server.c 프로그램리스트 /* 파일명 : multi_server.c 기능 : echo 와 daytime 을같이제공하는멀티서버컴파일 : cc -o multi_server multi_server.c -lsocket -lnsl 실행예 : multi_server */ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <sys/wait.h> #include <stdio.h> #include <time.h> #include <string.h> extern int errno; #define MAXLINE 1024 int main(int argc, char *argv[]) { int echo_fd, daytime_fd, s; /* 소켓번호 */ int echo_port, daytime_port; /* 포트번호 */ int nfds, len; fd_set read_fds; struct sockaddr_in server_addr, client_addr; /* 소켓주소구조체 */ if (argc!= 2) { printf(" 실행방법 : %s 포트번호 \n", argv[0]); echo_port = atoi(argv[1]); /* daytime 서비스포트번호를임의로배정 */ daytime_port = echo_port + 1;

21 /* echo 서비스를위한소켓생성 */ echo_fd = socket(pf_inet, SOCK_STREAM, 0); bzero((char *)&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(inaddr_any); server_addr.sin_port = htons(echo_port); bind(echo_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)); /* daytime 서비스를위한소켓생성 */ daytime_fd = socket(pf_inet, SOCK_STREAM, 0); server_addr.sin_port = htons(daytime_port); bind(daytime_fd,(struct sockaddr *)&server_addr,sizeof(server_addr)); listen(echo_fd, 5); listen(daytime_fd, 5); /* select() 호출 */ nfds = daytime_fd + 1; FD_ZERO(&read_fds); while(1) { FD_SET(echo_fd, &read_fds); FD_SET(daytime_fd, &read_fds); if(select(nfds, &read_fds, (fd_set *)0, (fd_set *)0, (struct timeval *)0) < 0) { printf("select error: %s\n", strerror(errno)); /* echo 클라이언트가접속을요구해온경우 */ if (FD_ISSET(echo_fd, &read_fds)) { len = sizeof(client_addr); bzero((char *)&client_addr, len); s = accept(echo_fd, (struct sockaddr *)&client_addr, &len); echo_process(s); close(s); /* daytime 클라이언트가접속을요구해온경우 */ if (FD_ISSET(daytime_fd, &read_fds)) { len = sizeof(client_addr); s = accept(daytime_fd, (struct sockaddr *)&client_addr, &len); daytime_process(s); close(s);

22 /* echo 서비스처리함수정의 */ int echo_process(int echo_fd) { int len; char buf[maxline]; while((len = read(echo_fd, buf, sizeof(buf)))!= 0) { if (len < 0) { printf("echo: read error - %s\n", strerror(errno)); if (write(echo_fd, buf, len) < 0) { printf("echo: write error - %s\n", strerror(errno)); return 0; /* daytime 서비스처리함수 */ int daytime_process(int daytime_fd) { time_t now; char buf[maxline]; time(&now); sprintf(buf, "%s\n", ctime(&now)); if (write(daytime_fd, buf, strlen(buf)) < 0) { printf("daytime: write error - %s\n", strerror(errno)); return 0;

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

2009년 상반기 사업계획

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

More information

PowerPoint 프레젠테이션

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

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

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

제1장 Unix란 무엇인가?

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

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장 Unix란 무엇인가?

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

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

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

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

제1장 Unix란 무엇인가?

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

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

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

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

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

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

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

<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

<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

본 강의에 들어가기 전

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

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 - 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

본 강의에 들어가기 전

본 강의에 들어가기 전 네트워크프로그래밍 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

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

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

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

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

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

Microsoft PowerPoint - 09-Pipe

Microsoft PowerPoint - 09-Pipe 9. 파이프 상명대학교소프트웨어학부 파이프 시그널은이상한사건이나오류를처리하는데는이용하지만, 한프로세스로부터다른프로세스로대량의정보를전송하는데는부적합하다. 파이프 한프로세스를다른관련된프로세스에연결시켜주는단방향의통신채널 2 pipe() Usage #include int pipe(int filedes[2]); 3 < ex_1.c > #include

More information

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 - 09-CE-23-윈도우 소켓

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

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

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

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

More information

2009년 상반기 사업계획

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

More information

<43B7CE20BECBBEC6BAB8B4C220BCD2C4CFC7C1B7CEB1D7B7A1B9D62E687770>

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

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

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

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.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 학습목표 을 작성하면서 C 프로그램의

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

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

슬라이드 1

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

More information

<43B7CE20BECBBEC6BAB8B4C C5EBBDC52E687770>

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

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 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

슬라이드 1

슬라이드 1 Task 통신및동기화 : 파이프 (Pipe) Chapter #11 파이프 (Unamed Pipe) 표준입출력과파이프 FIFO(Named Pipe) 강의목차 Unix System Programming 2 파이프 (Unnamed Pipe) 파이프 (Pipe) (1) 하나의프로세스를다른프로세스에연결시켜주는단방향의통신채널 입출력채널과동기화기능을제공하는특수한형태의파일

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

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.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

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

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

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

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

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

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

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

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

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 - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

본 강의에 들어가기 전

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

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

Microsoft PowerPoint PythonGUI-socket

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

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

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

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여

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

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

<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A

<4D F736F F F696E74202D20B3D7C6AEBFF6C5A9C7C1B7CEB1D7B7A1B9D65F FBCD2C4CF5FC3A4C6C35FBFA1C4DA2E BC8A3C8A 학습목표 자바의소켓포트의개념을이해한다 네트워크프로그래밍 클라이언트통신프로그램의구조를이해한다 소켓과클라이언트소켓을구분하여이해한다 11 주소켓 - 애코김문정 tops@u1.ac.kr 2 포트 (port) 데이터송수신창구 0~65536 (0~1024 : well-known port) ServerSocket 클래스 ( 소켓 ) ServerSocket 클래스에사용되는클래스

More information

Network Programming

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

More information

5. 소켓 프로그래밍

5. 소켓 프로그래밍 5.4 Multitsaking ( 한번에여러개의클라이언트다루기 ) 5.4.1 Per-Client Process 클라이언트별접속을프로세스로담당하기 5.4.2 Per-Client Thread 클라이언트별접속을쓰레드로담당하기 5.4.3 Constrained Multitasking 프로세스 쓰레드의수를제한하여시스템부하줄이기 5.4.1 Per-Client Processes

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 인터넷프로토콜 6 장 중급소켓프로그래밍 (2) 목차 제 6 장중급소켓프로그래밍 6.1 소켓옵션 6.2 시그널 6.3 넌블로킹입 / 출력 6.4 멀티태스킹 6.5 멀티플렉싱 6.6 다수의수신자처리 2 시그널 (Signal) 시그널이란? 예상치않은이벤트발생에따른일종의소프트웨어인터럽트 Ex) ctrl + c, ctrl + z, 자식프로세스의종료 외부에서프로세스에게전달할수있는유일한통로

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

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

좀비프로세스 2

좀비프로세스 2 Signal & Inter-Process Communication Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 좀비프로세스 2 좀비프로세스 (zombie process) 좀비프로세스란프로세스종료후메모리상에서사라지지않는프로세스 좀비프로세스의생성이유. 자식프로세스는부모프로세스에게실행결과에대한값을반환해야한다.

More information

9장 윈도우 소켓 프로그래밍

9장   윈도우 소켓 프로그래밍 윈도우소켓프로그래밍 _A_2015 버전 IT CookBook, 윈도우 API 프로그래밍 한빛미디어의윈도우 API 프로그래밍, 윈도우네트워크프로그래밍, 혜지원 API programming 을참조함! Updated 2015.11.22 1 학습목표 TCP/IP 프로토콜의개념을이해하고, 윈도우프로그래밍을이용한간단한채팅프로그램을작성하여이해도를높인다. 내용 소켓연결 메시지교환

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 명품 Java Essential 1 2 학습목표 1. 소켓통신에대한이해 2. 자바로간단한소켓통신프로그램작성 TCP/IP 소개 3 TCP/IP 프로토콜 두시스템간에데이터가손상없이안전하게전송되도록하는통신프로토콜 TCP 에서동작하는응용프로그램사례 e-mail, FTP, 웹 (HTTP) 등 TCP/IP 특징 연결형통신 한번연결후계속데이터전송가능 보낸순서대로받아응용프로그램에게전달

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct

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

Microsoft PowerPoint - 09-CE-24-채팅 프로그램

Microsoft PowerPoint - 09-CE-24-채팅 프로그램 순천향대학교컴퓨터학부이상정 1 학습내용 사용자인터페이스 프로그램구성 TCP 연결설정프로그램 서버연결설정 클라이언트연결설정 TCP 데이터송수신 순천향대학교컴퓨터학부이상정 2 사용자인터페이스 순천향대학교컴퓨터학부이상정 3 1:1 채팅프로그램 한프로그램이동시에서버와클라이언트로동작 프로그램시작시서버로동작 서버소켓생성하고상대방접속요청대기 채팅을위한연결요청시클라이언트로동작

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

[제1강] 텍스트를 입력하세요

[제1강] 텍스트를  입력하세요 제 14 강 채팅프로젝트 1-1 Visual C++ 프로그래밍 컴퓨터과학과 김강현교수 제 14강의학습내용소켓 (Socket) 서버와클라이언트 CAsyncSocket 와 Csocket Listen, OnAccept, OnReceive 소켓 (Socket) 의개요 TCP/IP 프로토콜을이용하여네트워크프로그램을개설하기위핚인터페이스 젂선과젂구사이에는소켓이라는것이있다.

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

61 62 63 64 234 235 p r i n t f ( % 5 d :, i+1); g e t s ( s t u d e n t _ n a m e [ i ] ) ; if (student_name[i][0] == \ 0 ) i = MAX; p r i n t f (\ n :\ n ); 6 1 for (i = 0; student_name[i][0]!= \ 0&&

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 4 장파일 컴퓨터과학과박환수 1 2 4.1 시스템호출 컴퓨터시스템구조 유닉스커널 (kernel) 하드웨어를운영관리하여다음과같은서비스를제공 파일관리 (File management) 프로세스관리 (Process management) 메모리관리 (Memory management) 통신관리 (Communication management) 주변장치관리 (Device

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

4. What will be the output of this program? Explain results for each variable and each thread. #include "apue.h" int var=1; pthread_mutex_t lock; void

4. What will be the output of this program? Explain results for each variable and each thread. #include apue.h int var=1; pthread_mutex_t lock; void 학번 : 이름 : 1. What will be the output of this program? assumption: parent's process id=10100, child process id=10101. #include "apue.h" char buf[] = "a write to stdout\n"; int main(void) int var; /* automatic

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

학번 : 이름 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

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

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