ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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() : 소켓연결을 종료한다.

     

     

     

     

    댓글

Designed by Tistory.