기어가더라도 제대로

네트워크 프로그래밍 본문

기타

네트워크 프로그래밍

Damagucci-juice 2022. 4. 7. 16:59
  • 서버에 요청하고 응답을 받을 때까지 필요한 것

고려할 것들

  • 패킷 처리

    • 어떤 내용을 보내고,
    • 몇번에 나눠 보낼 것인지
      협의를 해야한다.
  • 대역폭
    패킷을 보낼 때 한번에 주고 받을 양을 정의

  • 지연율
    서버까지 도달하는 거리가 아주 멀어져버리거나, 서울 - 부산 거리를 지구 한바퀴를 돌아 오는 경우.

Darwin(OS)

C API 기반
BSD socket
Bonjour(dns_sd)
Best Performance
Cross platform

단점

Core Foundation Network

  • C API
  • WWAN activation
  • Good run loop integration
  • Protocols
    • Bonjour
    • TCP
    • TLS
    • FTP
    • HTTP/HTTPS

Foundation

  • Objective-C 와 Swift 에 적합
    URLSession 비동기
    이 자체가 비동기니까 디스팻치 큐에 넣을 필요는 없다.

Network APIs

for HTTP/HTTPs
URL Loading 을 제일 관심깊게 봐야한다.

NSURLSession

Session = Resquest +Resquest + Resquest ... Resquest

종류

  • Singleton shared session
    데이게이트 없이 간단한 요청

  • Default session

    • 기본 설정 세션 / 커스텀 설정 가능
  • ephemeral session

    • 델리게이트 없이 비공개 세션
  • Background session

    • 백그라운드 동작을 위한 세션

Session daemon

image

세션 관리를 숨겨진 데몬이 하고 있다.

  • 데몬 : 항상 떠있는 프로그램을 데몬이라 한다.

NSURLSession Task 종류

URLSessionTask

간단한 데이터는 DataTask
헤비하면 DownloadTask

Delegate

응답이 오면 올 때마다 델리게이트가 호출이 된다.
근데 상황 마다 조금씩 델리게이트가 호출되는 종류가 다르다.

Delegate

non - Blocking vs. Async

Comments