일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 삼성 sw 역량테스트
- 크롬 설치 안됨
- 크롬설치
- C++
- 백준 14503번
- 연산자 끼워넣기
- 백준 14888번
- ChromeStandaloneSetup64안됨
- chromeSetup.exe꺼짐
- 바로꺼짐
- 크롬설치파일꺼짐
- chromeSetup.exe 안됨
- 로봇청소기
- Today
- Total
공대생의 개발 일기장
System Programming - network 본문
network programming은 음... 사실 모르겠다. 갑자기 개념이 난해해졌달까? 일단은 socket에 대해서 생각해보자.
socket이 뭐냐 file이다. 그럼 file과 차이는 뭐냐? 사실 나도 잘 모르겠다... 그냥 특별한 file!이라고 생각하면 편할 것 같다. 일단 이름부터 network니까 인터넷 환경을 이용한다고 생각될 것이다. 그리고 실제로 그렇다. 지금까지 실습한 것이 모두 한 컴퓨터에서 했었다면 network는 여러 대의 컴퓨터끼리 연결...? 그냥 network적 특징을 가진다고 보면될 것 같다.
여러 대의 컴퓨터를 이용하기 때문에 각 컴퓨터마다의 ip를 사용하고 또, port number라는 것도 이용한다. port number 음... ip를 주소라고 치면 port number는 더 정확히 몇 동 몇 호인지까지 표기해주는거라고 이해하자. 어쨌든 이제 각 컴퓨터의 ip와 port number를 아니까 서로 소통할 수 있게 된다. 슬슬 인터넷과 같은 느낌이 들지 않는가?! 이미 CS에서 network에대해서 조금 공부했으니 이제 각 컴퓨터 중 어떤것은 server, 어떤 것은 클라이언트라는 느낌도 들 것이다.
socket도 일단은 file이라고 했으니까 예전에 file을 다루었던 함수들(open이나 write, read)을 쓸 수 있는데 또 번거롭게도 그 함수들을 그냥 사용할 수가 없다...
x = socket( ? ); // 참고로 x는 integer
connect(x, 이걸 보낼 컴퓨터 ip+port number, ?);
이런식으로 기존 함수들로 바로 여는 대신에 socket이랑 connect라는 함수를 쓴다. 그럼 이제 받는 놈은
y = socket( ? );bind(y, 자기 ip + port number);listen(y, 5)y2 = accept(y, ?);
솔직히 이해안되는데 그냥 외워라. bind가 무엇인지 listen이 무엇인지 accept가 무엇인지는 단어 뜻으로 그냥 직관적으로 받아들일 수 있을 것이다. 근데 진짜 어이없는건 여기까지가 지금까지 썼던 함수 read다. read함수 하나면 끝날 걸 엄청 돌아서 구현한 것.
'시스템 프로그래밍 - 리눅스' 카테고리의 다른 글
System Programming - Select (4) | 2023.05.23 |
---|---|
System Programming - network2 (0) | 2023.05.16 |
System Programming - pstree, environment variable (0) | 2023.05.02 |
System Programming - gdb for fork (0) | 2023.05.02 |
System Programming - exit, wait, shell (0) | 2023.05.02 |