Main Content

TCP/IP 인터페이스를 통해 데이터 쓰기 및 읽기

데이터 쓰기

write 함수는 tcpclient 객체에 연결된 원격 호스트에 데이터를 동기식으로 씁니다. 우선 데이터를 지정한 다음 데이터 쓰기를 수행합니다. 함수는 값이 지정된 개수만큼 원격 호스트에 쓰여질 때까지 기다립니다.

이 예제에서는 tcpclient 객체 t가 이미 있습니다.

% Create a variable called data
data = 1:10;

% Write the data to the object t
write(t, data)

참고

모든 읽기 작업이나 쓰기 작업에서는 데이터 전송을 위해 데이터형이 uint8로 변환됩니다. 이렇게 변환된 데이터형은 사용자가 다른 데이터형을 지정한 경우 그 데이터형으로 다시 변환됩니다.

데이터 읽어오기

read 함수는 tcpclient 객체에 연결된 원격 호스트에서 데이터를 동기식으로 읽고 반환합니다. 다음과 같은 세 개의 읽기 옵션이 있습니다.

  • 사용 가능한 모든 바이트 읽기(인수 없음)

  • 선택 사항으로, 읽어올 바이트 수 지정

  • 선택 사항으로, 데이터형 지정

크기를 지정하지 않는 경우 디폴트 읽기를 통해 BytesAvailable 속성값이 사용되며 이 값은 입력 버퍼에서 사용 가능한 바이트 수와 동일합니다.

다음 예제에서는 tcpclient 객체 t가 이미 있습니다.

% Read all bytes available.
read(t)

% Specify the number of bytes to read, 5 in this case.
read(t,5)

% Specify the number of bytes to read, 10, and the data type, double.
read(t,10,"double")

참고

모든 읽기 작업이나 쓰기 작업에서는 데이터 전송을 위해 데이터형이 uint8로 변환됩니다. 이렇게 변환된 데이터형은 사용자가 다른 데이터형을 지정한 경우 그 데이터형으로 다시 변환됩니다.

기상 관측소 서버에서 데이터 획득하기

TCP/IP 통신은 주로 서버에서 데이터를 획득하는 데 사용됩니다. 이 예제에서는 원격 기상 관측소에서 데이터를 획득하고 플로팅하는 방법을 보여줍니다.

참고

이 예제의 IP 주소는 실제로 쓰이는 IP 주소가 아닙니다. 이 예제에서는 원격 서버에 연결하는 방법을 보여줍니다. 따라서 여기에 표시된 주소를 통신하고자 하는 서버의 IP 주소나 호스트 이름으로 대체하십시오.

  1. 여기에 표시된 주소와 포트 1045를 사용하여 tcpclient 객체를 만듭니다.

    t = tcpclient("172.28.154.231",1045)
    t = 
      tcpclient with properties:
    
                  Address: '172.28.154.231'
                     Port: 1045
        NumBytesAvailable: 0
    
      Show all properties, functions
    
    
  2. read 함수를 사용하여 데이터를 획득합니다. 3개의 센서(온도, 기압, 습도)의 샘플 10개에 대해 읽어올 바이트 수를 30으로 지정합니다. 데이터형을 double로 지정합니다.

    data = read(t,30,"double");
  3. 온도, 기압, 습도에 대해 각 열이 하나씩 나타나도록 1×30 데이터를 10×3 데이터로 형태 변경합니다.

    data = reshape(data,[3,10]);
  4. 온도를 플로팅합니다.

    subplot(311);
    plot(data(:,1));
  5. 기압을 플로팅합니다.

    subplot(312);
    plot(data(:,2));
  6. 습도를 플로팅합니다.

    subplot(313);
    plot(data(:,3));
  7. TCP/IP 클라이언트 객체를 지워 이 객체와 원격 호스트 간의 연결을 닫습니다.

    clear t

웹사이트에서 페이지 읽기

이 예제에서는 TCP/IP 객체를 사용하여 RFC Editor 웹사이트에서 페이지를 읽습니다.

  1. TCP/IP 객체를 만듭니다. 포트 80은 웹 서버의 표준 포트입니다.

    t = tcpclient("www.rfc-editor.org",80);

    TCP/IP 객체의 Terminator 속성을 설정합니다.

    configureTerminator(t,"LF","CR/LF");
  2. 이제 writeline 함수와 readline 함수를 사용하여 서버와 통신할 수 있습니다.

    웹 서버에 웹 페이지를 전송하도록 요청하려면 GET 명령을 사용하십시오. 'GET (path/filename)'을 사용하여 RFC Editor 웹사이트로부터 텍스트 파일을 요청할 수 있습니다.

    writeline(t,"GET /rfc/rfc793.txt");

    서버는 명령을 받으면 웹 페이지를 보냅니다. 객체의 NumBytesAvailable 속성을 확인하여 데이터가 보내졌는지 알 수 있습니다.

    t.NumBytesAvailable

    이제 웹 페이지 데이터를 읽을 수 있습니다. 기본적으로, readline은 한 번에 한 라인씩 읽어옵니다. NumBytesAvailable 값이 0이 될 때까지 데이터 라인을 읽을 수 있습니다. 렌더링된 웹 페이지는 표시되지 않으며, HTML 파일 데이터가 화면에서 스크롤됩니다.

    while (t.NumBytesAvailable > 0)
        A = readline(t)
    end
    
  3. 더 많은 통신을 수행하려면 데이터 읽기 및 쓰기를 계속할 수 있습니다. 객체에 대한 통신을 마치면 해당 객체를 삭제합니다.

    clear t

참고 항목

| | |