본문 바로가기

분류 전체보기68

(소켓,프로토콜)Linux와 Windows에서의 소켓 컴퓨터와 컴퓨터끼리의 네트워크 통신을 위해서 여러 과정이 필요하지만 나처럼 SW를 프로그래밍하는 사람에겐 복잡한 과정을 대신 해주는 소켓이라는 아주 고마운 도구가 있다. 이번에는 Linux와 Windows 운영체제에 따른 전반적인 소켓의 특성에 대해 공부한걸 써보고자 한다. 먼저 Linux에서 소켓이란 단순히 파일로 취급된다. 리눅스에서 각 파일에 매겨지는 정수를 파일 디스크립터라고 하는데 위와 같이 0,1,2번은 표준입출력으로 고정되어있다. (표준입력은 키보드로 입력된 파일, 표준출력은 모니터로 출력될 파일을 생각하면 된다.) 그래서 소켓과 같은 파일들은 3번부터 할당되고 사용자는 해당 디스크립터를 통해 원하는 파일을 쉽게 찾는다. (설명링크 https://dev-ahn.tistory.com/96) 소.. 2020. 6. 30.
(C++)연산자 오버로딩의 활용 class Point { int x; int y; public: Point(int _x=0, int _y=0) :x(_x), y(_y) {} void print() const { cout 2020. 6. 29.
(C++)VS에서 함수에서 지역변수의 레퍼런스값 리턴시 접근할수 있는 이유 int& Rf() { int a1 = 3; int& A1 = a1; printf("%d", A1); return A1; } int main() { int& a=Rf(); a = 3; printf("%d", a); } 위의 코드와 같이 Rf함수에서 지역변수의 참조인 A1을 리턴하여 main함수에서의 참조자a에 저장하였다. 원래대로라면 지역변수 A1이 가리키는 a1은 함수 Rf의 스코프가 종료될때 해제되고 접근이 불가능해야 정상일것이다. 하지만 위의 코드는 잘 동작한다. a를 바꾸는것은 물론이고 main과 Rf에서의 변수의 주소값이 동일하게 나온다. 왜 이것이 가능한지 나는 궁금했고 결과적으로 말하면 정확한 원인은 밝혀내지 못했다. 하지만 조사했던 부분을 한번 포스팅해보고자 한다. int& Rf() { in.. 2020. 6. 29.
(C++)함수에서의 const 사용 C++에서 자주 사용하는 키워드인 const. 함수에서는 어떤 경우에 사용하는지 알아보자. 1. 함수 선언 시 뒤에 붙은 const class Test { int k; void NonConstFunc() { k=3; } void Func() const { //k=3 -> 에러발생 //NonConstFunc() -> 에러발생 }; }; 함수 뒤에 붙은 const는 해당 함수가 속해있는 클래스의 멤버변수를 바꾸지 않겠다는 의미이다. 또한 멤버변수를 바꾸는 또다른 함수를 호출하는것 또한 막아놓았다. 2. 함수 선언시 앞에 붙은 const class Test { int k; public: Test(); const int Func() { k = 3; return k; }; const int& RefFunc(int.. 2020. 6. 29.