C_C++ 프로그래밍
-
뇌자극 TCP/IP 10강 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 6. 2. 11:07
프로세스란? 최소 실행 단위 객체, 프로그램의 실행 이미지프로그램은 일반적으로 하드 디스크 등에 저장되어 있는 실행코드이며프로세스는 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업 단위이다=> 하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리 상에서 실행된다. 다수의 프로세스를 동시에 운용한다.PID (Process ID)를 할당하여 사용한다. 멀티 프로세스동시에 여러 프로세스를 운용한다.리눅스와 윈도우 등의 대부분의 운영체제프로세스를 번갈아 가면서 사용한다. (시분할, time sharing)=> 하드웨어로 분할하여 처리 = 멀티 코어 pid_t = fork(void) fork 함수를 이용해서 프로세스를 복사 부모 프로세스 : fork 함수를 호출한 프로..
-
뇌자극 TCP/IP 9강 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 5. 29. 21:52
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..
-
구조체를 이용한 UDP 통신C_C++ 프로그래밍/UDP 2019. 5. 29. 00:35
소스코드 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..
-
뇌자극 TCP/IP 8강 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 5. 26. 00:43
인터넷 커뮤니케이션 방법TCP / UDP TCP 통신의 이유패킷 통신다양한 경로다양한 회선 상태 TCP 프로토콜의 특징1. 연결 지향(Three-way handshake)전화와 비슷하게 세번의 과정으로 상대방을 서로 확인한다.개인의 SEQ를 교환하여 +1을 더하여 ACK 신호를 교환하여 서로를 확인 2. 신뢰성 (전 이중 통신)SEQ(시퀀스 번호)를 사용하여 패킷의 순서를 조정을 할 수 있다. => 신뢰성출처 : 정보통신기술용어 모든 메시지의 ACK를 보낸다잡음과 변조 = CheckSum 경로는 어떻게 확인을 할 수 있을까?IP가 맡고 있다.그래서 TCP/IP 1. 인터넷에서 전달된 데이터 -> 소켓 버퍼2. 소켓 버퍼 -> read() -> 애플리케이션( 소켓버퍼를 사용하지 않으면 빠르지만, 데이터 불..
-
뇌자극 TCP/IP 7장 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 5. 25. 22:29
인터넷 주소와 도메인인터넷 사이에서 노드를 구별하기 위해서 사용하는 것이 인터넷 주소이다.방대한 크기의 주소를 관리하기 위한 시스템이 필요하다. 42억개의 노드를 관리할 수 있다.0.0.0.0 ~ 255.255.255.255계층적 관리 (4계층) 를 한다.1바이트 = 256새 (0~255) ICANN 국제적 관리 기구에서 관리한다.A Class (0...)국가 단위의 빅 클래스 B Class (10...)대형 기업, 대학, 연구소 C Class (110...)작은 규모의 회사 클래스 D Class (1110...) 인터넷 주소는 이더넷 카드에 할당이 되어 있다.하나의 이더넷 카드에 여러개의 주소가 부여되기도 한다.MAC address 점 표기 방식은 컴퓨터가 해석할 수가 없다.즉 주소 변환을 위한 함수가..
-
뇌자극 TCP/IP 6강 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 5. 25. 21:49
네트워크 바이트 순서언어는 문화에 따른 어순이 존재한다.마찬가지로 컴퓨터도 어순의 차이가 존재한다.바이트 순서에 따른 차이를 극복해야한다. 컴퓨터는 비트가 아닌 바이트로만 본다.CPU는 바이트를 읽는 다른 순서를 가지고 있다. => 바이트 오더 낮은 주소부터 읽는 방식은 Big-endian높은 주소부터 읽는 방식은 little-endian 인터넷 상에서 데이터를 주고 받기 위해서는 바이트 오더 문제를 해결해야한다.=> 바이트 오더를 통일한다. 네트워크 바이트 오더 == 빅 엔디안제조과정과 기술에 문제가 있기 때문에 소프트웨어 상에서 통일하게 되었다. 호스트 바이트 오더 --------------------- 네트워크 바이트 오더 ------------------------ 호스트 바이트 오더 호스트 바이..
-
pthread_mutex_init (뮤텍스 사용하기!)C_C++ 프로그래밍 2019. 5. 25. 01:59
개발 환경 OS Ubuntu 18.04.2 컴파일러 gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) int pthread_mutex_init(pthread_mutex_t * mutex, const pthread_mutex_attr *attr); mutex 객체를 초기화 시킨다. attr은 특성인데, 기본적인 뮤텍스를 원한다면 NULL로 설정하면 된다. critical section = 임계 구역 (하나의 쓰레드만 접근이 가능) pthread_mutex_t 구조체 pthread_mutex_lock();lock을 걸어 임계 구역을 시작한다. pthread_mutex_unlock();lock을 풀어 임계 구역을 해제한다. 소스코드 12345678910111213141516..
-
pthread_attr 사용 (pthread_detach 없이 자원 반납하기)C_C++ 프로그래밍 2019. 5. 25. 01:51
개발 환경 OS Ubuntu 18.04.2 컴파일러 gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04) int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate); PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_DETACHED 상태로 변경. pthread_attr_t attr; // JOINABLE 상태로 변경 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); // DETACHED 상태로 변경 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); int pthread_..