주요 콘텐츠

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

tcpclient

TCP/IP 서버와 TCP/IP 클라이언트 연결 생성

설명

tcpclient 객체는 원격 호스트 및 원격 포트와의 연결을 나타내며, MATLAB®에서 데이터를 읽고 쓰기 위한 것입니다. 원격 호스트는 TCP/IP 통신을 지원하는 서버 또는 하드웨어일 수 있으며, 반드시 이미 존재해야 합니다. tcpclient 객체는 항상 클라이언트이며 서버로 사용할 수 없습니다. TCP/IP 서버 생성 방법에 대한 정보는 TCP/IP 서버 소켓을 사용하여 통신를 참조하십시오.

생성

설명

t = tcpclient(address,port)는 원격 호스트 address 및 원격 포트 port와 연관된 서버에 연결하는 TCP/IP 클라이언트를 생성합니다. address의 값은 원격 호스트 이름 또는 원격 호스트 IP 주소일 수 있습니다. port의 값은 1과 65535 사이의 숫자여야 합니다. 입력 addressAddress 속성을 설정하고, 입력 portPort 속성을 설정합니다.

잘못된 주소나 포트를 지정했거나, TCP/IP 서버가 실행 중이지 않거나, 서버에 연결할 수 없는 경우 해당 객체가 생성되지 않으며 MATLAB가 오류를 발생시킵니다.

예제

t = tcpclient(address,port,Name,Value)는 연결을 생성하고 하나 이상의 이름-값 쌍 인수를 사용하여 추가적인 Properties를 설정합니다. 이름-값 쌍 인수를 사용하여 Timeout, ConnectTimeoutEnableTransferDelay 속성을 설정합니다. 각 속성 이름을 따옴표로 묶고, 그 뒤에 속성 값을 입력하십시오.

예: t = tcpclient("144.212.130.17",80,"Timeout",20,"ConnectTimeout",30)는 IP 주소 144.212.130.17의 포트 80에 있는 TCP/IP 서버에 TCP/IP 클라이언트 연결을 생성합니다. 타임아웃 기간을 20초로 설정하고 연결 시간 초과를 30초로 설정합니다.

예제

속성

모두 확장

객체 생성 속성

원격 호스트 이름 또는 IP 주소로, 문자형 벡터 또는 문자열 스칼라로 지정됩니다. 이 속성은 객체 생성 시에만 설정할 수 있습니다.

예: t = tcpclient("www.mathworks.com",80)는 www.mathworks.com의 포트 80에 TCP/IP 클라이언트 연결을 생성합니다.

예: t = tcpclient("144.212.130.17",80)는 IP 주소 144.212.130.17의 포트 80에 있는 TCP/IP 서버에 TCP/IP 클라이언트 연결을 생성합니다.

데이터형: char | string

원격 호스트 포트, 1부터 65535 사이의 숫자로 지정됩니다. 이 속성은 객체 생성 시에만 설정할 수 있습니다.

예: t = tcpclient("www.mathworks.com",80)는 www.mathworks.com의 포트 4012에 TCP/IP 클라이언트 연결을 생성합니다.

데이터형: double

읽기 및 쓰기 작업을 완료하는 데 허용되는 시간(초)이며 숫자 값으로 지정됩니다. 이름-값 쌍 인수를 사용하여 객체 생성 시 이 속성을 설정합니다. 객체를 생성한 후에도 점 표기법을 사용하여 변경할 수 있습니다.

예: t = tcpclient("144.212.130.17",80,"Timeout",20)는 읽기/쓰기 시간 초과 기간을 20초로 설정합니다.

데이터형: double

원격 호스트에 연결하는 데 허용되는 시간(초)으로, 숫자 값으로 지정됩니다. 이 속성은 지정된 원격 호스트에 대한 연결 요청이 성공하거나 실패할 때까지 기다리는 최대 시간을 지정합니다. 이 속성은 객체 생성 시에만 설정할 수 있습니다.

예: t = tcpclient("144.212.130.17",80,"ConnectTimeout",30)는 연결 시간 초과 기간을 30초로 설정합니다.

데이터형: double

서버의 지연된 확인 응답을 허용하며, 논리적 true 또는 false로 지정됩니다. 이 속성은 연결에 대해 Nagle 알고리즘이 활성화되었는지 비활성화되었는지 여부를 나타냅니다.

이 속성이 true인 경우, 클라이언트는 미수신 데이터의 작은 세그먼트를 수집하여 서버로부터 확인 응답(ACK)이 도착할 때 단일 패킷으로 전송합니다. 네트워크로 데이터를 즉시 전송하려면 이 속성을 false로 설정하십시오. 네트워크 속도가 느린 경우 전송 지연 기능을 활성화하여 성능을 개선할 수 있습니다. 그러나 빠른 네트워크에서는 확인 응답이 신속하게 도착하므로 전송 지연 활성화 여부의 차이는 미미합니다.

이 속성은 객체 생성 시에만 설정할 수 있습니다.

예: t = tcpclient("144.212.130.17",80,"EnableTransferDelay",false)는 전송 지연을 비활성화합니다.

데이터형: logical

R2024a 이후

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

예: t = tcpclient("144.212.130.17",80,"Tag","Sensor")"Sensor"라는 레이블을 가진 TCP/IP 클라이언트를 생성합니다.

데이터형: string

읽기 및 쓰기 속성

읽기 전용 속성입니다.

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

예: t.NumBytesAvailable는 읽을 수 있는 바이트 수를 반환합니다.

데이터형: double

읽기 전용 속성입니다.

원격 호스트에 기록된 총 바이트 수를 숫자 값으로 반환합니다.

예: t.NumBytesWritten는 쓰여진 바이트 수를 반환합니다.

데이터형: double

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

uint16, int16, uint32, int32, single 또는 double와 같은 멀티바이트 데이터 유형을 읽고 쓸 때 이 속성의 값을 설정합니다. 이 속성의 값은 tcpclient에 연결된 원격 호스트의 구성과 일치해야 합니다. 원격 호스트나 다른 애플리케이션은 기본 바이트 순서가 빅엔디안일 수 있지만, 이 속성의 기본값은 little-endian입니다.

예: t.ByteOrder = "big-endian"는 바이트 순서를 빅 엔디언으로 설정합니다.

데이터형: char | string

ASCII 종결 데이터를 읽고 쓰는 종결자 문자. "LF", "CR", "CR/LF" 또는 0부터 255까지의 숫자로 반환됩니다. 읽기 및 쓰기 종결자가 다르면 Terminator는 이러한 값의 1x2 셀형 배열로 반환됩니다. configureTerminator 함수를 사용하여 이 속성을 설정합니다.

예: configureTerminator(t,"CR")는 읽기와 쓰기 종결자를 모두 "CR"로 설정합니다.

예: configureTerminator(t,"CR",10)는 읽기 종결자를 "CR"로 설정하고 쓰기 종결자를 10로 설정합니다.

데이터형: double | char | string

콜백 속성

Bytes available 콜백 트리거 모드는 "off", "byte" 또는 "terminator"로 반환됩니다. 이 설정은 콜백이 꺼져 있는지, BytesAvailableFcnCount로 지정한 바이트 수에 의해 트리거되는지, 아니면 Terminator로 지정한 종결자에 의해 트리거되는지를 결정합니다. configureCallback 함수를 사용하여 이 속성을 설정합니다.

예: configureCallback(t,"byte",50,@callbackFcn)는 50바이트의 새 데이터를 읽을 수 있을 때마다 callbackFcn 콜백을 트리거하도록 설정합니다.

예: configureCallback(t,"terminator",@callbackFcn)는 종결자를 읽을 수 있을 때 callbackFcn 콜백을 트리거하도록 설정합니다.

예: configureCallback(dev,"off")는 콜백을 끕니다.

데이터형: char | string

BytesAvailableFcn로 지정된 콜백을 트리거하는 데이터 바이트 수이며, double로 반환됩니다. 이 값은 BytesAvailableFcnMode 속성이 "byte"인 경우에만 사용됩니다. 이러한 속성은 configureCallback 함수를 사용하여 설정합니다.

예: configureCallback(t,"byte",50,@callbackFcn)는 50바이트의 새 데이터를 읽을 수 있을 때마다 callbackFcn 콜백을 트리거하도록 설정합니다.

데이터형: double

bytes available 이벤트에 의해 트리거된 콜백 함수는 함수 핸들로 반환됩니다. bytes available 이벤트는 특정 수의 바이트 또는 종결자를 수신하면 생성됩니다. 함수 핸들을 할당할 때까지 이 속성은 비어 있습니다. configureCallback 함수를 사용하여 이 속성을 설정합니다.

예: configureCallback(t,"byte",50,@callbackFcn)는 50바이트의 새 데이터를 읽을 수 있을 때마다 callbackFcn 콜백을 트리거하도록 설정합니다.

데이터형: function_handle

오류 이벤트에 의해 트리거되고 함수 핸들로 반환되는 콜백 함수입니다. 비동기 읽기 또는 쓰기 오류가 발생하면 오류 이벤트가 생성됩니다. 함수 핸들을 할당할 때까지 이 속성은 비어 있습니다.

예: t.ErrorOccurredFcn = @myErrorFcn

데이터형: function_handle

사용자 데이터에 대한 일반 용도 속성으로, 모든 MATLAB 데이터형으로 반환됩니다. 예를 들어, 콜백 함수로부터 이벤트가 트리거된 경우 이 속성을 사용하여 데이터를 저장할 수 있습니다.

예: t.UserData

객체 함수

readRead data from remote host over TCP/IP
readlineTCP/IP를 통해 원격 호스트에서 ASCII 문자열 데이터 줄을 읽습니다.
readbinblockRead one binblock of data from remote host over TCP/IP
writeTCP/IP를 통해 원격 호스트에 데이터를 기록합니다.
writelineTCP/IP를 통해 원격 호스트에 ASCII 데이터 라인을 작성합니다.
writebinblockWrite one binblock of data to remote host over TCP/IP
writereadTCP/IP를 통해 원격 호스트에 명령을 쓰고 응답을 읽습니다.
configureTerminatorTCP/IP를 통해 원격 호스트와 ASCII 문자열 통신을 위한 종결자 설정
configureCallbackSet callback function and trigger condition for communication with remote host over TCP/IP
flushTCP/IP를 통한 원격 호스트와의 통신을 위한 버퍼 지우기
delete메모리에서 인스트루먼트 객체를 제거합니다
clearMATLAB 작업 공간에서 인스트루먼트 객체 제거

예제

모두 축소

표시된 호스트 주소를 사용하여 TCP/IP 객체 t를 생성하고 포트 80를 지정하십시오.

t = tcpclient("www.mathworks.com",80)
t = 
  tcpclient with properties:

              Address: 'www.mathworks.com'
                 Port: 80
    NumBytesAvailable: 0

  Show all properties, functions

호스트 이름(예: 지정된 웹 주소 또는 ''localhost')을 사용하여 연결할 경우 IP 주소는 기본적으로 IPv6 형식으로 설정됩니다. 연결하려는 서버가 IPv4 형식을 기대하는 경우 연결이 실패합니다. IPv4의 경우 호스트 이름 대신 명시적인 IP 주소를 지정하여 연결을 생성할 수 있습니다.

표시된 IP 주소와 포트 80를 사용하여 t라는 TCP/IP 클라이언트 연결을 생성하십시오.

t = tcpclient("144.212.130.17",80)
t = 
  tcpclient with properties:

              Address: '144.212.130.17'
                 Port: 80
    NumBytesAvailable: 0

  Show all properties, functions

t라는 TCP/IP 클라이언트 연결을 생성하고 시간 초과 기간을 20초로 설정하십시오.

t = tcpclient("144.212.130.17",80,"Timeout",20)
t = 
  tcpclient with properties:

              Address: '144.212.130.17'
                 Port: 80
    NumBytesAvailable: 0

  Show all properties, functions

ans = 20

Timeout의 값을 확인하십시오.

t.Timeout

출력은 속성 변경을 반영합니다.

t라는 TCP/IP 클라이언트 연결을 생성하고 ConnectTimeout 속성을 30초로 설정하십시오.

t = tcpclient("144.212.130.17",80,"ConnectTimeout",30)
t = 
  tcpclient with properties:

              Address: '144.212.130.17'
                 Port: 80
    NumBytesAvailable: 0

  Show all properties, functions

ConnectTimeout의 값을 확인하십시오.

t.ConnectTimeout
ans = 30

출력은 속성 변경을 반영합니다.

t라는 TCP/IP 클라이언트 연결을 만들고, 포트 4000을 통해 TCP/IP 에코 서버에 연결합니다. 그렇게 하려면 포트 4000에서 echotcpip 서버를 실행해야 합니다.

echotcpip("on",4000)
t = tcpclient("localhost",4000)
t = 
  tcpclient with properties:

              Address: 'localhost'
                 Port: 4000
    NumBytesAvailable: 0

  Show all properties, functions

write 함수는 t에 연결된 원격 호스트에 데이터를 동기식으로 기록합니다. 먼저 데이터를 지정하고, 그 다음에 데이터를 작성하십시오. 이 함수는 지정된 수의 값이 원격 호스트에 기록될 때까지 MATLAB 실행을 일시 중지합니다.

변수 datauint8 데이터 10바이트를 할당하십시오.

data = uint8(1:10)
data = 1×10 uint8 row vector

    1    2    3    4    5    6    7    8    9   10

데이터를 확인하십시오.

whos data
  Name      Size            Bytes  Class    Attributes

  data      1x10               10  uint8              

에코 서버에 데이터를 기록합니다.

write(t,data)

쓰기 작업의 성공 여부를 NumBytesAvailable 속성을 확인하여 확인하십시오.

t.NumBytesAvailable
ans = 10

클라이언트가 에코 서버에 연결되므로 서버에 쓰는 데이터는 클라이언트로 반환됩니다. 사용 가능한 모든 데이터 바이트를 읽으십시오.

read(t)
ans = 1×10 uint8 row vector

    1    2    3    4    5    6    7    8    9   10

인수를 지정하지 않고 read 함수를 사용하면 원격 호스트에 연결된 t에서 사용 가능한 모든 데이터 바이트를 읽고 해당 데이터를 반환합니다. 읽어온 값의 개수는 NumBytesAvailable 속성에 의해 결정되며, 이는 입력 버퍼에서 사용 가능한 바이트 수를 나타냅니다.

객체를 삭제하여 TCP/IP 클라이언트와 원격 호스트 간의 연결을 종료합니다. echotcpip 서버를 종료하십시오.

clear t
echotcpip("off")

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

t = tcpclient("192.168.1.2",10000,Timeout=2,Tag="Receive");
t = 

  tcpclient with properties:

              Address: '192.168.1.2'
                 Port: 10000
                  Tag: "Receive"
    NumBytesAvailable: 0
 

다른 변수에 동일한 연결에 대한 참조가 존재하지 않을 경우, 작업 공간 변수를 지움으로써 TCP/IP 클라이언트의 연결을 해제할 수 있습니다.

clear(t)

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

tcpclientfind
ans =

     []

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

T = tcpclientfind
T = 

   tcpclient with properties:

              Address: '198.51.100.255'
                 Port: 80
                  Tag: ""
    NumBytesAvailable: 0

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

delete(T)

이 명령은 tcpclient 객체를 삭제하고 클라이언트 연결을 끊습니다. 호스트에 다시 연결하려면 tcpclient를 사용하여 새 클라이언트 인터페이스를 생성해야 합니다.

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

tcpclientfind
ans =

     []

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

T
T = 

  handle to deleted tcpclient

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

clear T

확장 기능

모두 확장

버전 내역

R2014b에 개발됨

모두 확장