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 주소나 호스트 이름으로 대체하십시오.
여기에 표시된 주소와 포트
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
read
함수를 사용하여 데이터를 획득합니다. 3개의 센서(온도, 기압, 습도)의 샘플 10개에 대해 읽어올 바이트 수를30
으로 지정합니다. 데이터형을double
로 지정합니다.data = read(t,30,"double");
온도, 기압, 습도에 대해 각 열이 하나씩 나타나도록 1×30 데이터를 10×3 데이터로 형태 변경합니다.
data = reshape(data,[3,10]);
온도를 플로팅합니다.
subplot(311); plot(data(:,1));
기압을 플로팅합니다.
subplot(312); plot(data(:,2));
습도를 플로팅합니다.
subplot(313); plot(data(:,3));
TCP/IP 클라이언트 객체를 지워 이 객체와 원격 호스트 간의 연결을 닫습니다.
clear t
웹사이트에서 페이지 읽기
이 예제에서는 TCP/IP 객체를 사용하여 RFC Editor 웹사이트에서 페이지를 읽습니다.
TCP/IP 객체를 만듭니다. 포트
80
은 웹 서버의 표준 포트입니다.t = tcpclient("www.rfc-editor.org",80);
TCP/IP 객체의
Terminator
속성을 설정합니다.configureTerminator(t,"LF","CR/LF");
이제
writeline
함수와readline
함수를 사용하여 서버와 통신할 수 있습니다.웹 서버에 웹 페이지를 전송하도록 요청하려면
GET
명령을 사용하십시오.'GET
을 사용하여 RFC Editor 웹사이트로부터 텍스트 파일을 요청할 수 있습니다.(path/filename)
'writeline(t,"GET /rfc/rfc793.txt");
서버는 명령을 받으면 웹 페이지를 보냅니다. 객체의
NumBytesAvailable
속성을 확인하여 데이터가 보내졌는지 알 수 있습니다.t.NumBytesAvailable
이제 웹 페이지 데이터를 읽을 수 있습니다. 기본적으로,
readline
은 한 번에 한 라인씩 읽어옵니다.NumBytesAvailable
값이 0이 될 때까지 데이터 라인을 읽을 수 있습니다. 렌더링된 웹 페이지는 표시되지 않으며, HTML 파일 데이터가 화면에서 스크롤됩니다.while (t.NumBytesAvailable > 0) A = readline(t) end
더 많은 통신을 수행하려면 데이터 읽기 및 쓰기를 계속할 수 있습니다. 객체에 대한 통신을 마치면 해당 객체를 삭제합니다.
clear t