IPConnection.SendStr

From SunFlurry wiki
Jump to: navigation, search
  SendStr (Обмен данными)
Объект:Объект IP
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку, разрыв соединения, системная ошибка
Визуальность:Нет

TCP/IP функция отсылает строку по установленному соединению. Первыми отсылаются 4 байта -- размер строки в символах, затем само содержимое строки. Функцию можно использовать как для блокирующих, так и для не блокирующих соединений. Если соединение будет разорвано до успешной отправки данных, функция вызовет исключение. Чтобы принять информацию на противоположной стороне, можно использовать функцию ReceiveStr.

Синтаксис

IPConnection.SendStr(<Строка для отправки (STRING)>,<Отослать строку в UTF-16 (INT)>=0)

Аргументы

  • <Строка для отправки (STRING)> - Строка, содержимое которой будет передано с помощью установленного соединения.
  • <Отослать строку в UTF-16 (INT)> - (необязательный аргумент) По умолчанию (0), строка отсылается в ANSI кодировке (и может содержать бинарные данные), если этот параметр равен 1, строка будет отослана в UTF-16 (один символ задается двумя или четырьмя байтами, см. Строки). В случае UTF-16 первые 4 байта -- длина строки будут представлять собой количество слов в строке (т.е., будут в 2 раза меньше, чем длина строки в байтах).

Примеры

//Пример соединения USR1
Сокет:=IPConnection.ConnectUSR1("127.0.0.1:13777");
If not Сокет.isConnected() Then
  Message("Сервер не отвечает","!");
  Exit 0;
EndIf;
СтрОшибка:="";
Try
  СтрОшибка:="Сервер не принял режим USR1 (1)!";
  Сокет.SendCmd("USR1");
  Комм:=Сокет.ReceiveCmd();
  If Комм="BUSY" Then
    Message("Сервер занят!","!");
    Exit 0;
  EndIf;
  If Комм<>"OK  " Then
    Message("Сервер не принял режим USR1 (2)!","!");
    Exit 0;
  EndIf;

  СтрОшибка:="Ошибка при обмене!";
  Сокет.SendStr("Hello, this is client!");
  //Отсылка текстового файла C:\file.txt
  Сокет.SendCmd("RECV");
  Сокет.SendFile("C:\file.txt",1);

  //Окончание обмена файлами
  Сокет.SendCmd("FNSH");

  Комм:=Сокет.ReceiveCmd();
  If Комм<>"OK  " Then
    Exit 0;
  EndIf;
  Стр:="Любая информация для обмена";
  Сокет.SendStr(Стр,1);
  Сокет.ReceiveStr(Стр,1);
  Message("Сервер прислал информацию: "+Стр);
  //Далее следует обмен любой другой информацией
Except
  If СтрОшибка<>"" Then
    Message(СтрОшибка,"!");
  Else
    Message(PopError(),"!");
  EndIf;
  Exit 0;
EndTry;