본문 바로가기

전체보기272

sscanf와 sprintf에 대해서 알아보자 개발 환경 OS Ubuntu 18.04.2 컴파일러 gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) sscanf int sscanf(const char *str, const char *format, ...) sscanf를 간단하게 예시를 들면 str = "Welcome my home"; sscanf(str, "%s%s", str1, str2); str에 저장된 문자열을 str1과 str2에 따로따로 입력을 한다는 의미이다. str1 = "Welcome" str2 = "my"를 가지게 된다. 이때 format을 정해주어 문자열인지 숫자인지 따로 따로 정할 수 있다. (알파벳 대문자 소문자 등등...) sprintfint sprintf(char* str, const ch.. 2019. 6. 4.
시그널 함수의 종류 1. SIGHUP터미널을 잃어버렸을 때 발생한다. 즉 프로그램을 실행시킨 상태에서 콘솔 창을 닫을 때 발생한다.(종료) 2. SIGABRT프로그램의 비정상 종료를 뜻한다. (abort) 3. SIGNINTctrl + c 키를 입력할 때 발생한다. => 프로세스가 종료된다. 4. SIGIO비동기적인 입출력이 발생했을 때 사용한다. 5. SIGKILL프로세스를 강제로 죽이기 위해서 사용한다.주로 시스템 관리 목적 6. SIGSEGV시그널을 사용자가 직접 발생 시키기도 하지만, 운영체제에서 발생 시킬 수도 있다.ex) segmetaion fault 7. SIGSTOP프로세스를 일시 중단할 때 사용한다.ctrl + z 8. SIGCONT멈춘 프로세스를 다시 살리는 신호이다. 시그널 함수시그널 함수를 사용하면, .. 2019. 6. 2.
뇌자극 TCP/IP 11강 요약 IPC = Inter process Communications네트워크 프로그래밍이 아닌 시스템 프로그래밍에 가까운 부분이다. 소켓 함수는 20개 내외로 제한적이기 때문에, 응용 프로그램 개발을 할 시에는 시스템 프로그래밍 기술이 매우 중요하다.네트워크 프로그램도 시스템 위에서 작동한다. 프로세스간의 통신을 위해서 사용한다.안정적인 작동이 가능한다.최근에는 쓰레드 기반을 사용한다. (IPC가 너무 난해하기 때문에) System V IPC 계열과 POSIX IPC가 존재한다. PIPE단방향의 데이터 통신용으로 사용한다.=> 양방향을 사용하기 위해서는 2개를 생성 부모 프로세스와 자식 프로세스간의 통신을 위해서 사용한다. 이름이 없는 파이프와 이름이 있는 파이프로 나뉨 #includeint pipe(int f.. 2019. 6. 2.
뇌자극 TCP/IP 10강 요약 프로세스란? 최소 실행 단위 객체, 프로그램의 실행 이미지프로그램은 일반적으로 하드 디스크 등에 저장되어 있는 실행코드이며프로세스는 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업 단위이다=> 하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리 상에서 실행된다. 다수의 프로세스를 동시에 운용한다.PID (Process ID)를 할당하여 사용한다. 멀티 프로세스동시에 여러 프로세스를 운용한다.리눅스와 윈도우 등의 대부분의 운영체제프로세스를 번갈아 가면서 사용한다. (시분할, time sharing)=> 하드웨어로 분할하여 처리 = 멀티 코어 pid_t = fork(void) fork 함수를 이용해서 프로세스를 복사 부모 프로세스 : fork 함수를 호출한 프로.. 2019. 6. 2.
뇌자극 TCP/IP 9강 요약 UDP 복습 연결 지향 : Threeway handshake흐름 기반신뢰성 : 재 전송, 재 조합단점 : 낮은 성능, 데이터의 연속성 유지에 불리하다.스트리밍 방송은 사용 (어느 정도의 잡음이 있어도 괜찮다) 신뢰성이 꼭 필요하면, TCP를 사용해야 하지만 그렇지 않다면 무 필요. => UDP User DataGram Protocol (UDP)DataGram 중심 프로토콜Fire and Forget순서가 없다신뢰할 수 없다.높은 성능을 기대=> 실시간 스트리밍 방송에 사용 가능 출처 : 위키백과 UDP 헤더는 4개의 필드로 구성되며, 그 각각은 2바이트(16비트)로 이루어져 있다.[1] 오프셋 옥텟 0 1 2 3 옥텟 비트 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1.. 2019. 5. 29.
구조체를 이용한 UDP 통신 소스코드 Sever.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 #include #include #include #include #include #include #include #include #define PORT_NUM 20046 #define MAXLEN 256 struct usr_data { char name[MAXLEN]; char buf[MAXLEN]; }; int main(int argc, char **argv) { int sock.. 2019. 5. 29.