소켓

JaeGu Jeong·2022년 11월 8일
0

소켓통신

내컴퓨터와 다른 컴퓨터와 데이터를 주고받는 방식은 여러가지있다. stdio를 이용해 집접타이핑해도 되고 usb나 하드를 이용해 물리적으로 전송 할 수 있다. 이 중 이더넷을 사용하여 다른컴퓨터와 통신하는 것이 소켓통신이다.

소켓이란?

소켓도 파일이다. 다른 컴퓨터와 송수신이 가능한 파일이다. 편지로 치면 받는사람 보내는사람 정보가 적혀있듯이 ip주소와 port, 주소가 ipv6인지 ipv4인지 적어두고 write/send, read/recv를 통해 소켓에 데이터를 쓰면 상대 소켓에서 읽고, 쓰면 반대로 읽고 하면서 통신하게 된다.

C언어에서 소켓프로그램 로직

시스템콜함수 socket을 사용하면 커널에서 소켓을 하나 만들어준다. 여기에 bind함수로 소켓에 ip와 port, 주소체계를 부여하고 listen함수로 열어주면 다른 컴퓨터가 접근을 시도 할 수 있다. 접근을 시도 할 컴퓨터도 소켓을 생성하고 connect함수로 열린포트에 접근하면 listen중인 소켓은 접근시도가 있음을 파일정보에 넣는다. 프로그램은 이를 감지하여 accept함수로 송수신용 새로운 소켓을 생성하고 이 소켓의 fd를 이용하여 send/recv를 하며 데이터를 주고받는다.

profile
BackEnd Developer

0개의 댓글