C_C++ 프로그래밍
-
뇌자극 TCP/IP 5강 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 5. 20. 16:32
파일과 소켓에 대해서 알아보자 유닉스는 모든 것을 파일로 취급하여, 입력과 출력 처리를 가능하게 한다. 파일권한 소유자 그룹 기타 rwx rwx rwx RWX => 2^2 + 2^1 + 2^0 => 4 + 2 + 1 = 7777 => 소유자와 그룹과 기타 사용자에게 읽기 쓰기 실행 권한을 부여한다. 표준 입력 : 0표준 출력 : 1표준 에러 : 2 재지향장치로 출력된 데이터를 다른 장치로 보내는 것. $ cat my.txt$ cat my.txt > ok.txt // 재지향$ ./stderr 2>errmsg.txt // error가 txt에 저장 파일 열기 #include#include#include int open(cost char *pathname, int flags); // pathname 파일 이름..
-
매우 단순한 TCP 프로그램C_C++ 프로그래밍/TCP_IP 2019. 5. 20. 04:45
처음으로 공부를 하면서 대강 만들어본 채팅 프로그램양방향 통신은 아니다. Server가 어떤 특정한 포트를 타고 들어오는 상대의 IP를 알 수 있도록 만들었다.Client는 Server에 이동한 이후에, (서버와 대화는 못 하지만.. ) 혼자 한 말을 다시 받는다. 실행 화면개발 환경 : Linux (vi) Server Client 1234$ ./server 0000 $ ./server 8918New Client Connect: 127.0.0.1cs 123456789101112$ ./clientconnect error : : Connection refused $ ./clientconnect error : : Connection refused $ fuser 0000/tcp0000/tcp: 1900 6007..
-
뇌자극 TCP/IP 4강 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 5. 19. 22:49
네트워크 프로그램의 흐름 이해하기 1. 기존의 망에 노드를 추가한다. => 인터넷 망에 접속하기 위해 (소켓) 2. 그 노드를 링크에 연결하기 => Socket (IP 주소 + Port 번호) 3. 통신 상대를 찾아가기1. 송신측 소켓 생성 -> 포트 부여 -> 상대편 IP/Port 주소로 연결 -> 통신 -> 종료 2. 수신측소켓 생성 -> 포트 부여 -> 상대편 연결 기다리기 -> 통신 -> 종료 // 인터넷과 연결하기 위한 접점 소켓을 생성한다. #include #include int socket(int domain, int type, int protocol); //domain : 소켓의 사용 영역을 정의한다.//type : 소켓 유형을 정의한다.//protocol : 소켓이 사용할 프로토콜을 정의..
-
뇌자극 TCP/IP 3강 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 5. 19. 22:06
1. 소켓에 대하여2. 서버/클라이언트 모델3. 인터넷 서비스 포트 소켓이란 무엇인가? 이미 만들어져 있는 소켓 함수를 사용하여 간단하게 데이터를 전송할 수 있다.TCP/IP 4계층에서 전송계층 위에 놓인다.전송 계층 위에서 전송계층의 프로토콜 제어를 위한 코드를 제공한다.소프트웨어 계층이라고 할 수 있다. 전송 계층 위에 있는 프로토콜만 제어하면 된다. (소켓 계층이라고도 불린다)하지만, 가끔 낮은 계층의 프로토콜을 다룰 때도 있다. BSD 소켓기업이 아닌 대학에서 개발하였고 C로 개발이 되었기 때문에 성공했다.자유롭게 사용하도록 공개됨 소켓이 하는 일소프트웨어 || (인터넷) || 소프트웨어-------------------------------> 소프트웨어와 소프트웨어를 연결한다.소프트웨어 간의 데..
-
뇌자극 TCP/IP 2강 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 5. 19. 16:30
리눅스와 윈도우는 다른 운영체지이며, 다른 기반을 가지고 있지만.BSD Socket은 같다. (버클리 대학에서 만듬)(BSD Socket이란? => 그냥 표준 Socket이다) 즉, 네트워크 프로그래밍 기술은 운영체제와 상관 없이 공유한다. 윈도우는 리눅스와 비교 했을 때, 최근에 등장한 운영체제이다.차별되는 기술들을 가지고 있지만, 네트워크 프로그래밍 기술은 유닉스를 계승하고 있다. 리눅스 : 인터넷 시태의 운영체제, 밝은 미래윈도우 : 리눅스와 기업 시장을 양분하고 있다, 밝은 미래 네트워크 프로그래밍을 배우고자 한다면, 리눅스 + 윈도우 둘다 경험 ※ 본 글은 개인 포트폴리오 혹은 공부용으로 사용하기 때문에, 무단 복사 유포는 금지하지만, 개인 공부 용도로는 얼마든지 사용하셔도 좋습니다
-
뇌자극 TCP/IP 1강 요약C_C++ 프로그래밍/뇌를 자극하는 TCP_IP 2019. 5. 19. 15:58
컴퓨터 네트워크로의 진화모든 것은 정보이고, 모든 자연현상은 정보와 네트워크의 상호작용의 결과이다.생물 현상도 정보와 네트워크의 상호작용의 결과이다. 네트워크의 효과1. 한정된 노드와 공간에 더 많은 정보가 저장이 가능하다.2. 하나의 노드가 끊겨도 거미줄처럼 이어져 있기 때문에, 문제가 없다. 컴퓨터끼리 참여하는 네트워크의 문제가 있었다.중앙 집중형 -> 분산형 상업적 컴퓨터 네트워킹을 위한 패킷 통신 방식의 개발이 필요했다. => 분산형 + 패킷 통신 --> 알파넷 --> 인터넷 (각 지역 별로 묶음) 이 만들어졌다. 네트워크 구조를 유지하기 위한 프롵토콜 = IP통신을 보장하기 위한 프로토콜 = TCP IP 전체 네트워크에서 식별 가능한 IP 주소를 부여하여, 원하는 노드로의 경로를 설정한다.인터넷..
-
유니온 파인드란?? (Union-Find)C_C++ 프로그래밍/C_C++ 프로그래밍 2019. 5. 12. 23:09
유니온 파인드(Union-Find)란 ? CS에서 서로소 집합을 찾는 기능을 구현하기 위해 중요한 역할을 하며 많은 서로소 부분 집합들로 나눠진 원소들에 대한 정보를 저장하고 조작하는 자료 구조이다. (MakeSet으로 각각의 요소를 생성하였다) (union 연산을 수 차례 수행하여 집합을 생성하였다) 출처 : 위키피디아 크게 세 가지 기능으로 분류를 할 수 있다. 1. Union function Union(x, y) // x와 y를 같은 집합으로 묶는 작업이다. xRoot := Find(x) // x의 최상단 부모를 찾음 (x의 집합이 어디인가?) yRoot := Find(y) // y의 최상단 부모를 찾음 (y의 집합이 어디인가?) xRoot.parent := yRoot // x와 y를 묶는다. 2...
-
[C++] 소수 구하기 (에라토스테네스의 체)C_C++ 프로그래밍/C_C++ 프로그래밍 2019. 4. 22. 03:02
보통 소수라 하면, 1과 자기자신을 제외하고는 나누어 떨어지지 않는 수라고 불린다.이를 구하기 위해서 하나 하나씩 나누어 떨어지는 지 검사를 하고는 했는데 더 빠르게 구할 수 있는 방법이 있다. 바로'에라토스테네스의 체' 라는 알고리즘을 사용하는 것이다. 에라토스테네스의 체는, 미리 범위를 정하여 소수인지 아닌지 구하여배열에 저장을 한 뒤에, 일반적으로 사용이 된다. 로직은 다음과 같다. 1은 소수가 아니다. 2는 소수이다. -> 2의 배수는 소수가 아니다.3은 소수이다. -> 3의 배수는 소수가 아니다.4는 소수가 이미 아니다.5는 소수이다. -> 5의 배수가 소수가 아니다.... (반복) 식으로 구현이 가능하며, boolean 값을 가지는 check 배열을 사용하여반복문을 돌려준다. 1. 1의 소수가..