주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

udpport

UDP 소켓에 연결

    설명

    udpport 객체를 사용하면 로컬 호스트의 UDP 소켓을 사용하여 바이트 유형 및 데이터그램 유형의 UDP 통신을 수행할 수 있습니다.

    생성

    설명

    u = udpport 또는 u = udpport("byte")는 IP 주소 버전을 IPV4로 설정하고 UDP 소켓에 바인딩한 바이트 유형 udpport 객체 u를 구성합니다.

    u = udpport(IPv) 또는 u = udpport("byte",IPv)IPv로 지정된 IP 주소 버전을 사용하여 바이트 유형 udpport 객체를 구성합니다. 이 IP 주소 버전은 "IPV4" 또는 "IPV6" 중 하나가 될 수 있습니다.

    예제

    u = udpport("datagram")는 IP 주소 버전을 IPV4로 설정한 데이터그램 유형 udpport 객체 u를 구성합니다.

    u = udpport("datagram",IPv)IPv로 지정된 IP 주소 버전을 사용하여 데이터그램 유형 udpport 객체를 구성합니다. 이 IP 주소 버전은 "IPV4" 또는 "IPV6" 중 하나가 될 수 있습니다.

    예제

    u = udpport(___,Name,Value)udpport 객체를 구성하고 이름-값 쌍 인수를 사용하여 지정된 객체 속성을 설정합니다. 잘못된 속성 이름이나 값을 지정하면 함수는 객체를 생성하지 않습니다. 이름-값 쌍 인수를 사용하여 설정할 수 있는 udpport 속성은 LocalHost, LocalPort, Timeout, ByteOrder, OutputDatagramSizeEnablePortSharing입니다.

    예제

    입력 인수

    모두 확장

    IP 주소 버전으로, "IPV4" 또는 "IPV6"으로 지정됩니다.

    참고

    IP 주소 버전은 설정 전체에서 일관되어야 합니다. IPV4 소켓과 IPV6 주소 간에는 통신이 불가능하며, 그 반대의 경우도 마찬가지입니다.

    이름-값 인수

    모두 확장

    선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

    R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

    이름-값 인수를 지원하는 속성은 LocalHost, LocalPort, Timeout, ByteOrder, OutputDatagramSizeEnablePortSharing입니다. 이 중 LocalHost, LocalPort, 및 EnablePortSharingudpport 객체가 생성된 후 읽기 전용이 됩니다.

    예: "Timeout",60

    속성

    모두 확장

    바이트 및 데이터그램 udpport 객체에 공통적인 속성

    읽기 전용 속성입니다.

    IP 주소에 대한 버전 유형으로, "IPV4" 또는 "IPV6"으로 지정됩니다.

    예: "IPV6"

    데이터형: char | string

    읽기 전용 속성입니다.

    로컬 호스트 이름 또는 점으로 구분된 10진수 IP 주소로, 문자형 벡터 또는 string형으로 지정됩니다. udpport 객체를 생성할 때 LocalHost에 대한 값을 지정하지 않으면 IPV4의 경우 디폴트 값은 "0.0.0.0"이고 IPV6의 경우 "::"입니다.

    예: "144.133.0.0"

    데이터형: char | string

    읽기 전용 속성입니다.

    UDP에 대한 바인딩을 위한 로컬 호스트의 포트로, 0~65535 사이의 숫자 값으로 지정됩니다. udpport 객체를 생성할 때 LocalPort에 대한 값을 지정하지 않으면 값이 자동으로 할당됩니다.

    예: 50791

    데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    바이트가 더 큰 숫자 값으로 배열되는 순차적 순서로, "little-endian" 또는 "big-endian"으로 지정됩니다.

    예: "big-endian"

    데이터형: char | string

    읽기 및 쓰기 작업에 허용되는 초 단위의 시간으로, double형으로 지정됩니다.

    예: 20

    데이터형: double

    데이터그램 패킷에 기록할 데이터의 최대 바이트 수로, 1~65507 사이의 double형 값으로 지정됩니다.

    예: 512

    데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    R2024a 이후

    연결을 식별하기 위한 레이블로, string형으로 지정됩니다. Tag를 사용하여 연결에 레이블을 적용하면 나중에 udpportfind에 이 레이블을 사용하여 연결에 액세스할 수 있습니다. 이렇게 하면 한 함수에서 소켓을 열고 다른 함수를 사용하여 소켓과 통신할 때 유용할 수 있습니다. 앱 콜백에서 연결을 찾아 액세스하는 데에도 유용합니다.

    예: "Sender"

    데이터형: string

    읽기 전용 속성입니다.

    이 소켓과 동일한 로컬 포트에 다른 UDP 소켓이 바인딩할 수 있도록 허용하는 설정으로, 논리적 true(1) 또는 false(0)로 지정됩니다.

    예: true

    데이터형: logical

    브로드캐스팅을 허용하기 위한 설정으로, 논리적 true(1) 또는 false(0)로 지정됩니다.

    예: true

    데이터형: logical

    읽기 전용 속성입니다.

    멀티캐스트를 허용하기 위한 설정으로, 논리적 true(1) 또는 false(0)로 지정됩니다.

    예: true

    데이터형: logical

    읽기 전용 속성입니다.

    멀티캐스트 데이터 수신을 위해 구독할 IP 주소 그룹입니다. configureMulticast 함수를 사용하여 이 속성을 설정합니다.

    예: "226.0.0.1"

    데이터형: char | string

    읽기 전용 속성입니다.

    전송자가 가입되어 있는 멀티캐스트 그룹이 동일할 때 udpport 멀티캐스트에서의 데이터 루핑백을 나타내며, 논리형으로 지정됩니다. configureMulticast 함수를 사용하여 이 속성을 설정합니다.

    예: false

    데이터형: logical

    오류 이벤트가 발생할 때 호출할 함수로, 함수 핸들로 지정됩니다.

    예: @myErrorFun

    데이터형: function_handle

    udpport 인스턴스에 대한 애플리케이션별 데이터입니다. 이는 사용자 데이터에 대한 일반 용도의 속성으로, MATLAB® 데이터형으로 지정됩니다. 예를 들어, 콜백 함수로부터 이벤트가 트리거된 경우 이 속성을 사용하여 데이터를 저장할 수 있습니다.

    예: datetime()

    데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell | function_handle | categorical | datetime | duration | calendarDuration | fi

    바이트 udpport 객체 속성

    읽기 전용 속성입니다.

    읽을 수 있는 바이트 수로, double형으로 반환됩니다.

    예: 512

    데이터형: double

    읽기 전용 속성입니다.

    udpport 소켓에 쓰여진 바이트 수로, double형으로 반환합니다.

    예: 48

    데이터형: double

    읽기 전용 속성입니다.

    ASCII로 종결되는 문자열 통신을 위한 종결자로, 문자열이나 숫자 값으로 반환됩니다. 읽기 및 쓰기 작업의 종결자가 다른 경우 값은 셀형 배열로 반환됩니다. 이 속성 값을 설정하려면 configureTerminator 함수를 사용하십시오.

    예: "CR/LF"

    데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | string | cell

    읽기 전용 속성입니다.

    bytes-available 이벤트가 발생할 때 호출되는 함수로, 함수 핸들로 지정됩니다. 이 속성 값을 설정하려면 configureCallback 함수를 사용하십시오.

    예: @myAvailFun

    데이터형: function_handle

    읽기 전용 속성입니다.

    bytes-available 이벤트를 트리거하는 데 필요한 입력 버퍼의 바이트 수로, 숫자 값으로 반환됩니다. 이 속성은 BytesAvailableFcnMode"byte"인 경우에만 적용됩니다. 이 속성 값을 설정하려면 configureCallback 함수를 사용하십시오.

    예: 64

    데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    읽기 전용 속성입니다.

    BytesAvailableFcn 콜백을 트리거하기 위한 조건으로, "off", "byte" 또는 "terminator"로 반환됩니다. 이 속성 값을 설정하려면 configureCallback 함수를 사용하십시오.

    예: "byte"

    데이터형: string

    데이터그램 udpport 객체 속성

    읽기 전용 속성입니다.

    읽을 수 있는 데이터그램 수로, double형으로 반환됩니다.

    예: 64

    데이터형: double

    읽기 전용 속성입니다.

    udpport 소켓에 쓰여진 데이터그램 수로, double형으로 반환됩니다.

    예: 8

    데이터형: double

    읽기 전용 속성입니다.

    데이터그램을 사용할 수 있는 이벤트가 발생할 때 호출되는 함수로, 함수 핸들로 반환됩니다. 이 속성 값을 설정하려면 configureCallback 함수를 사용하십시오.

    예: @myAvailFcn

    데이터형: function_handle

    읽기 전용 속성입니다.

    데이터그램 사용이 가능한 이벤트를 트리거하는 데 사용할 수 있는 데이터그램 수로, 숫자 값으로 반환됩니다. 이 속성은 BytesAvailableFcnMode"datagram"인 경우에만 적용됩니다. 이 속성 값을 설정하려면 configureCallback 함수를 사용하십시오.

    예: 16

    데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    읽기 전용 속성입니다.

    DatagramsAvailableFcn 콜백을 트리거하기 위한 조건으로, "off" 또는 "datagram"으로 반환됩니다. 이 속성 값을 설정하려면 configureCallback 함수를 사용하십시오.

    예: "datagram"

    데이터형: string

    객체 함수

    바이트 유형 및 데이터그램 유형 udpport 인터페이스용 함수:

    readUDP 소켓에서 데이터 읽기
    writeUDP 소켓에 데이터 쓰기
    configureCallbackSet callback function and trigger condition for communication with UDP socket
    configureMulticastSet multicast properties for communication with UDP socket
    flushUDP 소켓 버퍼 지우기

    바이트 유형 udpport 인터페이스에서만 가능한 함수:

    readlineUDP 소켓에서 ASCII 문자열 데이터 줄을 읽습니다.
    writelineWrite line of ASCII data to UDP socket
    configureTerminatorSet terminator for ASCII string communication with UDP socket

    예제

    모두 축소

    이 예제는 바이트 유형 UDP 통신의 일반적인 작업을 보여줍니다.

    바이트 유형 udpport 객체를 구성합니다.

    u = udpport("IPV4")
    u = 
    
      UDPPort with properties:
    
         IPAddressVersion: "IPV4"
                LocalHost: "0.0.0.0"
                LocalPort: 60825
        NumBytesAvailable: 0

    udpport 소켓을 통해 지정된 주소와 포트로 uint8 데이터 벡터를 씁니다.

    write(u,1:5,"uint8","125.0.1.4",2020);

    udpport 소켓에서 uint16 데이터의 10개 값을 읽습니다.

    data = read(u,10,"uint16");

    종결자를 정의하고 udpport 소켓을 통해 지정된 주소와 포트로 문자열을 전송합니다.

    configureTerminator(u,"CR/LF");
    writeline(u,"hello","125.0.1.4",2020);

    udpport 소켓에서 ASCII로 종결되는 문자열을 읽습니다.

    data = readline(u);

    멀티캐스트 주소 그룹을 구독합니다.

    configureMulticast(u,"226.0.0.1");

    50바이트를 사용할 수 있을 때 콜백을 트리거하도록 구성합니다.

    configureCallback(u,"byte",50,@myCallbackFcn);

    출력 버퍼를 플러시한 후 udpport 연결을 끊고 지웁니다.

    flush(u,"output");
    clear u

    이 예제는 데이터그램 유형 UDP 통신의 일반적인 작업을 보여줍니다.

    데이터그램 유형의 udpport 객체를 구성합니다.

    u = udpport("datagram","IPV4")
    u = 
    
      UDPPort with properties:
    
             IPAddressVersion: "IPV4"
                    LocalHost: "0.0.0.0"
                    LocalPort: 53465
        NumDatagramsAvailable: 0

    udpport 소켓을 통해 지정된 주소와 포트로 uint8 데이터 벡터를 씁니다.

    write(u,1:5,"uint8","125.0.1.4",2020);

    데이터그램 패킷 하나를 uint16 데이터로 읽습니다.

    data = read(u,1,"uint16");

    멀티캐스트 주소 그룹을 구독합니다.

    configureMulticast(u,"226.0.0.1");

    5개의 데이터그램을 사용할 수 있을 때 콜백을 트리거하도록 구성합니다.

    configureCallback(u,"datagram",5,@myCallbackFcn);

    출력 버퍼를 플러시한 후 udpport 연결을 끊고 지웁니다.

    flush(u,"output");
    clear u

    이 예는 데이터그램 크기가 데이터 분할에 어떤 영향을 미치는지 보여줍니다.

    포트 3030에서 echoudp를 켠 다음, OutputDatagramSize가 5인 데이터그램 유형의 udpport 객체를 생성합니다.

    echoudp("on",3030);
    u = udpport("datagram","OutputDatagramSize",5);

    uint8 데이터 20바이트를 echoudp 포트로 보냅니다.

    write(u,1:20,"uint8","127.0.0.1",3030);

    OutputDatagramSize가 5로 설정되었으므로 20바이트는 각각 5바이트의 데이터를 포함하는 4개의 데이터그램 패킷으로 전송됩니다.

    에코 서버로부터 4개의 데이터그램이 수신되었는지 확인합니다.

    u.NumDatagramsAvailable
    ans =
    
         4

    에코 서버로부터 수신된 4개의 데이터그램을 읽습니다.

    data = read(u,u.NumDatagramsAvailable,"uint8")
    data = 
    
      1×4 Datagram array with properties:
    
        Data
        SenderAddress
        SenderPort

    첫 번째 데이터그램에는 1~5(5바이트)의 값이 포함되어 있고, 두 번째 데이터그램에는 6~10, 세 번째 데이터그램에는 11~15, 네 번째 데이터그램에는 16~20의 값이 포함되어 있습니다.

    세 번째 데이터그램을 봅니다.

    data(3)
    ans = 
    
      Datagram with properties:
    
                 Data: [11 12 13 14 15]
        SenderAddress: "127.0.0.1"
           SenderPort: 3030

    여러 udpport 객체가 동일한 로컬 포트를 공유하도록 허용합니다.

    LocalPort 3030에 바인딩된 udpport 객체를 생성합니다.

    u1 = udpport("LocalPort",3030,"EnablePortSharing",true);

    동일한 포트를 사용하여 별도의 udpport 객체를 생성합니다.

    u2 = udpport("LocalPort",3030,"EnablePortSharing",true);

    EnablePortSharing은 두 udpport 객체 모두에 대해 true여야 합니다.

    스크립트 또는 MATLAB 명령줄에서 udpport를 사용하면 MATLAB 작업 공간에서 객체로 표현된 연결이 결과로 반환됩니다.

    U = udpport("datagram",LocalPort=3030,Tag="Receiver");
    U = 
    
      UDPPort with properties:
    
             IPAddressVersion: "IPV4"
                    LocalHost: "0.0.0.0"
                    LocalPort: 3030
                          Tag: "Receiver"
        NumDatagramsAvailable: 0
    

    다른 변수에 동일한 연결에 대한 참조가 없는 경우 작업 공간 변수를 지워 UDP 포트의 연결을 끊을 수 있습니다.

    clear(U)

    udpportfind를 사용하여 연결이 닫혔는지 확인합니다.

    udpportfind
    ans =
    
         []

    MATLAB 작업 공간에 존재하거나 클래스 속성 또는 앱 속성으로 저장된 udpport 연결이 있는 경우 다른 함수 또는 앱 콜백에서 udpport 객체에 액세스하지 못할 수 있습니다. 이 경우 udpportfind를 사용하여 연결을 찾아 삭제할 수 있습니다.

    U = udpportfind
    U = 
    
      UDPPort with properties:
    
             IPAddressVersion: "IPV4"
                    LocalHost: "0.0.0.0"
                    LocalPort: 3030
                          Tag: "Receiver"
        NumDatagramsAvailable: 0
    

    이 연결을 닫으려면 U를 삭제합니다.

    delete(U)

    이 명령은 udpport 객체를 삭제하고 장치의 연결을 끊습니다. 장치에 다시 연결하려면 udpport를 사용하여 새로운 연결을 생성해야 합니다.

    삭제 후 udpportfind를 호출하여 기존 연결이 없음을 확인합니다.

    udpportfind
    ans =
    
         []

    변수 U가 여전히 작업 공간에 존재하지만 이제는 유효하지 않은 핸들입니다.

    U
    U = 
    
      handle to deleted UDPPort

    udpport핸들 객체이므로 인터페이스를 삭제한 후에도 변수가 유지됩니다. (이 유형의 객체에 대한 자세한 내용은 핸들 객체 동작 항목을 참조하십시오.) clear를 사용하여 작업 공간에서 유효하지 않은 핸들을 제거할 수 있습니다.

    clear U

    버전 내역

    R2020b에 개발됨

    모두 확장