Связь TCP/IP с Удаленным Хостом

Это минимальные шаги, требуемые связываться с удаленным хостом с помощью TCP/IP.

В этом примере вы читаете страницу из Редактора RFC веб-сайт с помощью объекта TCP/IP.

  1. Создайте и сконфигурируйте инструментальный объект — Сначала вы создаете объект TCP/IP в рабочей области MATLAB®. Порт 80 является стандартным портом для веб-серверов.

    t = tcpip('www.rfc-editor.org', 80);

    По умолчанию объект TCP/IP имеет InputBufferSize 512, что означает, что это может только считать 512 байтов за один раз. Данные о веб-странице rfc-editor.org намного больше, чем 512 байтов, таким образом, необходимо установить большее значение для этого свойства.

    t.InputBufferSize = 30000;
  2. Соедините объект — Затем, вы открываете связь с сервером. Если бы сервер не присутствует или не принимает связи, вы получили бы ошибку здесь.

    fopen(t);
  3. Запишите и считайте данные — можно теперь связаться с сервером с помощью функций fprintf, fscanf, fwrite и fread.

    Чтобы попросить, чтобы веб-сервер отправил веб-страницу, вы используете команду GET. Можно попросить текстового файла из Редактора RFC у веб-сайта с помощью 'GET (path/filename)'.

    fprintf(t, 'GET /rfc/rfc793.txt');

    Сервер получает команду и передает веб-страницу обратно. Вы видите, передали ли какие-либо данные обратно путем рассмотрения свойства BytesAvailable объекта.

    t.BytesAvailable

    Теперь можно начать считывать данные о веб-странице. По умолчанию fscanf читает одну строку за один раз. Можно прочитать строки данных, пока значением BytesAvailable не является 0. Обратите внимание на то, что вы не будете видеть представленную веб-страницу; данные о файле HTML прокрутят на экране.

    while (t.BytesAvailable > 0)
        A = fscanf(t),
    end
    
  4. Разъединитесь и вымойтесь — Если вы хотите сделать больше коммуникации, можно продолжить читать и записывать данные здесь. Если вы сделаны с объектом, закрываете его и удаляете его.

    fclose(t);
    delete(t);
    clear t

Сервер пропускает связь

Этот пример показывает то, что происходит, когда объект TCP/IP теряет свою связь с удаленным сервером. Сервером является Генератор Sony/Tektronix® AWG520 Arbitrary Waveform (AWG). Его адресом является sonytekawg.yourdomain.com, и его порт 4000. IP-адрес хоста AWG 192.168.1.10 и является пользователем, конфигурируемым в инструменте. Связанное имя хоста дано вашим администратором сети. Номер порта фиксируется и найден в документации инструмента.

AWG может пропустить связь, потому что это выведено из эксплуатации, это выключается и так далее:

  1. Создайте инструментальный объект — Создают объект TCP/IP для AWG.

    t = tcpip('sonytekawg.yourdomain.com', 4000);
  2. Соединитесь с инструментом — Подключение к удаленному инструменту.

    fopen(t)
  3. Запишите и считайте данные — Запись команда к инструменту и считайте назад результат.

    fprintf(t,'*IDN?')
    fscanf(t)
    ans =
    SONY/TEK,AWG520,0,SCPI:95.0 OS:2.0 USR:2.0

    Примите, что сервер пропускает связь. При попытке читать из инструмента, тайм-аут происходит, и предупреждение выведено.

    fprintf(t,'*IDN?')
    fscanf(t)
    
    Warning: A timeout occurred before the Terminator was reached.
    (Type "warning off instrument:fscanf:unsuccessfulRead" to 
    suppress this warning.)
    ans =
         ''

    На данном этапе объект и инструмент все еще соединяются.

    t.Status
    ans =
    open

    При попытке записать в инструмент снова, сообщение об ошибке возвращено, и связь автоматически закрывается.

    fprintf(t,'*IDN?')
    ??? Error using ==> fprintf
    Connection closed by RemoteHost. Use FOPEN to connect to 
    RemoteHost.

    Обратите внимание на то, что, если объект TCP/IP соединяется с локальным хостом, предупреждающее сообщение не отображено. Вместо этого сообщение об ошибке отображено после следующей операции чтения после того, как связь будет пропущена.

  4. Разъединитесь и вымойтесь — Когда вам больше не нужен t, необходимо отключить его от хоста и удалить его из памяти и из рабочего пространства MATLAB.

    fclose(t)
    delete(t)
    clear t