TCP/IP( 소켓 프로그래밍) 소켓통신이란
- 코딩/TCP&IP
- 2019. 4. 21.
네트워크 프로그래밍이란
- 소켓을 기반으로 프로그래밍을 하기 때문에 소켓 프로그래밍이라고 한다.
- 네트워크로 연결된 장치들의 데이터 송수신 프로그램의 작성을 의미함
전화를 이용한 설명
(1) 전화 받는 소켓의 생성 ex) int socket (~~);
- 소켓은 전화기로 생각하면 쉽다.
- " socket함수 호출로 생성한다.
(2) 전화번호의 부여 ex) int bind (~~);
- 소켓의 주소할당 및 연결
- " 주소 정보는 IP와 PORT번호로 구성된다.
(3) 전화기 연결 ex) int listen(~~);
- 연결요청이 가능한 상태의 소켓 (걸려오는 전화를 받을 수 있는 상태)
- 전화를 거는 소켓은 연결 요청 가능 소켓이 될 필요가 없다. (걸려오는 전화를 받는 소켓에서 필요한 상태이므로)
(4) 전화 연결요청 수락 (전화오면 수화기 드는 거) ex) int accept(~~);
- 연결 요청 수락되면 데이터 송 수신 가능 (양방향 가능)
간략하게
1단계 소켓 생성 socket함수 호출
2단계 IP와 PORT번호 할당 bind 함수 호출
3단계 걸려오는 전화를 받을 수 있는 상태로 변경 listen 함수 호출
4단계 연결 요청에 대한 수락 accept함수 호출
이렇게 생성된 소켓을 서버 소켓 OR 리스닝 소켓이라고 한다.
이제 전화를 거는 소켓을 구현해보자 (연결을 요청하는 소켓)
- 연결을 요청하는 소켓은 리스닝 소켓과 다르게 간단하다.
- 소켓의 생성과 연결의 요청 ( ex) int connect(~~); )으로 구분된다.
이것을 클라이언트 소켓이라고 한다.
실행 방법
127.0.0.1을 빼고 본인 ip를 입력하셔도 됩니다.
소켓의 타입
(1) 연결 지향형 소켓(SOCK_STREAM) 특징 ( int tcp_socket = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP);
- 중간에 데이터가 소멸되지 않음
- 순차적으로 수신된다.
- 데이터 경계가 없다.
- 소켓대 소켓 연결은 무조건 1대1
(2) 비연결 지향형 소켓(SOCK_DGRAM 특징 ( int udp_socket = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP);
- 순서 상관없이 빠른 전송속도지향
- 데이터 손실 우려 있음
- 데이터의 경계가 존재한다.
- 전송시 데이터의 크기가 제한된다.
예시)
궁금하신 사항이 있다면 언제든 댓글 혹은 카톡 주세요
'코딩 > TCP&IP' 카테고리의 다른 글
op server client 소켓통신 소스코드 (0) | 2019.11.26 |
---|---|
file client server tcp-ip 소켓통신 소스코드 (0) | 2019.11.25 |
tcp-ip 소켓통신 채팅 echo서버이용 소스코드 (0) | 2019.11.24 |
tcp-ip 소켓통신 채팅프로그램 소스코드 (0) | 2019.11.24 |
서버 프로그램 구현 TCP-IP 소스코드 (0) | 2019.11.24 |