본문 바로가기
Swift

Swift: Network 프레임워크

by songmoro 2024. 8. 17.
728x90

Network.framework

전송 및 보안 프로토콜을 사용하여 데이터를 보내고 받기 위한 네트워크 연결을 만든다.

 

  • 사용자 지정 애플리케이션 프로토콜을 위해 TLS, TCP 및 UDP와 같은 프로토콜에 직접 액세스해야 할 때 이 프레임워크를 사용한다.
  • HTTP 및 URL 기반 리소스를 로드하기 위해 이 프레임워크를 기반으로 구축된 URLSession을 계속 사용한다.

 

 

NWEndPoint

네트워크 연결에서 로컬 혹은 리모트 엔드 포인트

 

  • enum NWEndpoint: Endpoint Types
    • case hostPort(host: NWEndpoint.Host, port: NWEndpoint.Port)
      • Host와 Port를 입력해 주는 EndPoint
    • case service(name: String, type: String, domain: String, interface: NWInterface?)
      • Bonjour service를 나타내는 EndPoint
    • case url(URL)
      • URL로 나타내어지는 EndPoint
    • case unix(path: String)
      • UNIX 도메인 경로로 나타내어지는 EndPoint

 

NWParameters

final class NWParameters

연결에 쓰이는 프로토콜과 데이터 sending의 옵션들, 네트워크 경로 제약 조건들을 저장하고 있는 객체

 

NWConnection

final class NWConnection

로컬 EndPoint와 원격 EndPoint의 양방향 데이터 연결

 

  • init(host: NWEndpoint.Host, port: NWEndpoint.Port, using: NWParameters)
    • host와 port를 사용해 새로운 연결을 초기화한다.
  • start(queue: DispatchQueue)
    • 연결 수립을 시작하고 모든 연결 이벤트들을 전달할 queue를 설정
  • func cancel()
    • 연결을 취소하고 설정된 모든 네트워크 프로토콜을 정상적으로 연결 해제
  • func send(content: Data?, contentContext: NWConnection.ContentContext, isComplete: Bool, completion: NWConnection.SendCompletion)
    • 연결에 대한 데이터를 전송한다.
  • func send<Content>(content: Content?, contentContext: NWConnection.ContentContext, isComplete: Bool, completion: NWConnection.SendCompletion)
    • 사용자 지정 데이터 유형을 사용하여 연결에 대한 데이터를 전송한다.
  • func receive(minimumIncompleteLength: Int, maximumLength: Int, completion: (Data?, NWConnection.ContentContext?, Bool, NWError?) -> Void)
    • 핸들러가 한 번에 얼마나 많은 바이트를 받을 수 있는지를 나타내는 범위와 함께 단일 수신 완료 핸들러를 예약
  • func receiveMessage(completion: (Data?, NWConnection.ContentContext?, Bool, NWError?) -> Void)
    • 바이트 범위와 달리 전체 메시지에 대한 단일 수신 완료 핸들러를 예약
  • func batch(() -> Void)
    • 전송 및 수신 호출이 성능을 개선하기 위해 일괄 처리되는 블록을 정의

 

NWListener

들어오는 네트워크 연결을 수신하는 데 사용하는 객체

 

  • func start(queue: DispatchQueue)
    • listen을 등록하고, 모든 리스너 이벤트가 전달되는 대기열 설정
  • var stateUpdateHandler: (NWListener.State) -> Void)?
    • 리스너 상태 업데이트를 받는 핸들러
  • var newConnectionHandler: (NWConnection) -> Void)?
    • 인바운드 연결을 받는 핸들러

 

 

참고

Network

 

 

 

 

728x90

'Swift' 카테고리의 다른 글

Swift: Model data  (0) 2024.08.22
Swift: Attributes  (0) 2024.08.22
Swift: Result Builder  (0) 2024.08.13
Swift: 이벤트 큐, 이벤트 핸들러  (0) 2024.08.12
Swift: Async, Await, Thread  (0) 2024.08.12