-
[c언어] 소켓 프로그램P.study 2020. 1. 22. 09:36
소켓?
: 서버와 클라이언트의 데이터를 주고 받는 관계 (연결을 요청할 클라이언트 / 요청을 받을 서버)
소켓 프로그래밍?
클라이언트에서 서버로 접속을 할 때, 연결형(TCP) 또는 비연결형 (UDP) 를 사용할 지 결정해야한다.
TCP 경우 : 클라이언트와 서버간의 ''세션'' 을 연결한 뒤 데이터를 전송하여 안정성이 좋지만 느리다.
UDP 경우 : 클라이언트와 서버간의 "세션" 을 연결하지 않고 데이터를 전송하여 안전성이 좋지 않지만 빠르다.
[ 서버 ]
socket() : TCP,UDP 등 기본적인 소켓에 대한 설정을 구성함
bind() : 클라이언트가 서버의 위치를 알기 위한 IP와 Port의 등록작업
socket 주소와 port 를 할당하기 위해 sockaddr_in 구조체를 이용한다.
(구조체 : 하나 이상의 변수를 묶어서 좀 더 편리하게 사용할 수 있도록 도와주는 도구/똑같은 구조의 변수를 여러번 사용해야할 때)
memset() : 어떤 메모리의 시작점부터 연속된 범위를 어떤 값으로(바이트단위) 모두 지정하고 싶을때 사용함(for문 보다 속도가 빠르다)
listen() : 클라이언트으이 connect() 함수의 접속 요청을 확인하도록 요청한다. (요청에대한 처리는 accept() 함수에게 넘긴다. ) 요청에대한
listen(server_socket,5)
accept() : 클라이언트의 요청에 대한 처리를 하며 접속이 허락될 시 통신을 하기 위한 소켓을 생성해준다. (클라이언트와 대화하기 위한 소켓 생성!)
recv() : 서버가 클라이언트의 send() 함수를 통해 데이터를 전송한 것을 받는 함수
send() : 클라이언트에게 데이터를 전송한다.
closesocket() : 서버와 클라이언트의 소켓연결을 종료한다.
close(client_socket);
[ 클라이언트 ]
socket() : 클라이언트의 소켓을 생성하며 TCP인지 UDP 인지 결정한다.
connect() : listen()상태의 서버에게 접속 요청을 시도한다. (서버의 주소와 포트번호를 지정하기 때문에 지정된 서버의 주소와 포트번호로 연결을 시도한다.)
recv() : 서버에서 전송하는 데이터를 받는다.
send() : 함수를 통해서 데이터를 전송할 수 있다.
closesocket() : 소켓연결을 종료한다.
'P.study' 카테고리의 다른 글
PC 카카오톡 링크 연결이 안될때.. (3) 2020.04.09 Training 2020 실습 (0) 2020.01.30 [Winpcap] visual studio 환경 구축하기 (0) 2020.01.29 [소켓] visual studio 환경 구축하기 (0) 2020.01.29 [ARP Spoofing] ARP Table 정적으로 설정하기.1 (ARP 스푸핑 방어) (0) 2020.01.10