17일부터는 입출력 부분의 수업이 진행되었습니다 소켓 통신을 이용해서 옆 사람과 메시지를 주고받는 형태의 수업을 진행했습니다 하지만 부득이하게 bad code 사용했기에 이번에는 코드 리뷰보다는 입출력 수업 중 언급하셨던 용어나 중요한 개념들을 정리해 보려고 합니다
네트워킹(Networking) : 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구상하는 것
IP 주소 : 컴퓨터(host)를 구별하는데 사용되는 고유한 값 모든 컴퓨터는 IP 주소를 갖는다
서버 (Server) : 서비스를 제공하는 곳
클라이언트 (Client) : 서비스를 사용하는 곳
소켓(Socket)
- 떨어져 있는 두 호스트(서버 , 클라이언트)를 연결해주는 도구로써 인터페이스 역할을 한다
- 데이터를 주고 받을 수 있는 구조체로 소켓을 통해 데이터 통로(Stream)가 만들어진다
- 소켓의 역할에 따라 클라이언트 소켓(Client Socket) 서버소켓(Server Socket)으로 구분한다
Stream : 데이터가 전송되는 통로
패킷(Packet) : 네트워크에서 데이터를 주고받는 전송 단위
<네트워크에서 패킷을 보내는 방식>
TCP : 연결을 확인하는 방식 데이터를 보내면 저쪽에서 받았다고 하면 그다음 데이터를 보낸다
<안전함 , 대신 속도가 느림>
UDP : 동영상 서비스 같은 데서 많이 쓰인다 상대가 받던 안 받던 계속 데이터를 쏘는 방식
Socket 통신
서버
- 클라이언트 소켓의 연결 요청을 대기하고, 연결 요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다.
- socket() 함수를 이용하여 소켓 생성
- bind() 함수로 ip와 port 번호 설정
- listen() 함수로 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기시킬지 결정.
- accept() 함수를 사용하여 클라이언트와의 연결을 기다림.
클라이언트
- 실제로 데이터 송수신이 일어나는 것은 클라이언트 소켓이다.
- socket() 함수로 가장 먼저 소켓을 연다.
- connect() 함수를 이용하여 통신할 서버의 ip와 port 번호에 통신을 시도.
- 통신 시도 시, 서버가 accept() 함수를 이용하여 클라이언트의 socket descriptor를 반환.
- 이를 통해 클라이언트와 서버가 read(), write()를 하며 통신 ( 반복 )
<출처 -https://wonos.tistory.com/388>
InputStream
InputStream은 데이터를 byte 단위로 읽는 통로
OutputStream
InputStream 반대 개념으로 데이터를 쓰는 통로 , 데이터가 나가는 통로
'개발자 성장 일지' 카테고리의 다른 글
2022.03.21 예외 처리 (0) | 2022.03.21 |
---|---|
2022.03.18 입출력 속도 (0) | 2022.03.20 |
2022.03.16 Interpace 활용 <3단 구현> 코드로 보기 (0) | 2022.03.16 |
2022.03.16 Interpace 활용 <3단 구현> (0) | 2022.03.16 |
2022.03.16 복습 뱀 게임 (0) | 2022.03.16 |