---
title: "Руководство пользователя Библиотека SysLibSockets"
product: "ALTA IDE"
document_number: "№ 1-RU-159225-1.1"
version: "1.1"
language: "ru"
source: "https://docs.owen.ru/product/alta-ide/doc/library_SysLibSockets_stable"
pdf: "https://docs.owen.ru/download/pdf/iHzf1.rp_biblioteka+syslibsockets_1-ru-159225-1.1.pdf"
generated: "2026-10-14"
---

# Руководство пользователя Библиотека SysLibSockets

## Содержание

- [Цель документа](#topic-122796)
- [Установка библиотеки](#topic-122797)
- [Описание библиотеки SysLibSockets](#topic-122798)
  - [SysSockCreate](#topic-122799)
  - [SysSockBind](#topic-122800)
  - [SysSockListen](#topic-122801)
  - [SysSockAccept](#topic-122802)
  - [SysSockRecv и SysSockSend. Протокол TCP](#topic-122803)
  - [SysSockRecvFrom и SysSockSendTo. Протокол UDP](#topic-122804)
  - [SysSockShutdown](#topic-122805)
  - [SysSockClose](#topic-122806)
  - [SysSockSetOption](#topic-122807)
  - [SysSockGetOption](#topic-122808)
  - [SysSockHtonl](#topic-122809)
  - [SysSockHtons](#topic-122810)
  - [SysSockNtohl](#topic-122811)
  - [SysSockNtohs](#topic-122812)
  - [SysSockConnect](#topic-122813)
  - [SysSockIoctl](#topic-122814)

<a id="topic-122796"></a>

## Цель документа

Данный документ описывает программную реализацию передачи данных с помощью сетевых протоколов UDP и TCP для контроллеров ОВЕН, программируемых в среде ALTA IDE, c помощью библиотеки SysLibSockets.

<a id="topic-122797"></a>

## Установка библиотеки

Чтобы подключить библиотеку к проекту:

1. Откройте редактор **Менеджер библиотек** одним из способов:

- дважды нажмите ЛКМ на системную папку **Менеджер библиотек** в дереве проекта;

- или нажмите ПКМ на системную папку **Менеджер библиотек** в дереве проекта и выберите в контекстном меню пункт **Открыть**:

  ![Менеджер библиотек открыть](https://docs.owen.ru/book_img/2388/159141.png)

- В редакторе **Менеджер библиотек** откройте вкладку **Магазин**.

- Выберите библиотеку **SysLibSockets** и нажмите кнопку **Подключить** на карточке библиотеки.

- Библиотека добавится в проект и отобразится на вкладке **Мои библиотеки** в редакторе **Менеджер библиотек**.

<a id="topic-122798"></a>

## Описание библиотеки SysLibSockets

Библиотека SysLibSockets поддерживает работу с сокетами по TCP/IP и UDP.

Сокеты могут работать в блокирующем и неблокирующем режиме. В блокирующем режиме все операции, производимые с сокетом, являются синхронными, а в неблокирующем – асинхронными. Например, в блокирующем режиме функция чтения завершает свою работу только после получения данных, что, соответственно, делает время цикла ПЛК непрогнозируемым. В неблокирующем режиме вызов любой функции не останавливает цикл ПЛК.

Библиотека SysLibSockets содержит функции:

- [SysSockCreate](#topic-122799);
- [SysSockBind](#topic-122800);
- [SysSockListen](#topic-122801);
- [SysSockAccept](#topic-122802);
- [SysSockRecv и SysSockSend. Протокол TCP](#topic-122803);
- [SysSockRecvFrom и SysSockSendTo. Протокол UDP](#topic-122804);
- [SysSockShutdown](#topic-122805);
- [SysSockClose](#topic-122806);
- [SysSockSetOption](#topic-122807);
- [SysSockGetOption](#topic-122808);
- [SysSockHtonl](#topic-122809);
- [SysSockHtons](#topic-122810);
- [SysSockNtohl](#topic-122811);
- [SysSockNtohs](#topic-122812);
- [SysSockConnect](#topic-122813).

Часть функций библиотеки ссылаются на структуры:

**Описание структур библиотеки SysLibSockets**

| Структура | Описание |
| --- | --- |
| SOCKADDRESS | Структура для хранения адреса. См. описание в таблице ниже |
| SOCKET_FD_SET | Структура используется в функции SysSockSelect, которая не поддержана |
| SOCKET_TIMEVAL | Структура используется в функции SysSockSelect, которая не поддержана |

Описание структуры SOCKADDRESS

**Описание структуры SOCKADDRESS**

| Переменная | Тип | Описание |
| --- | --- | --- |
| sin_family | INT | Семейство протоколов. Входные аргументы:<br>• SOCKET_AF_INET (для семейства IPv4) |
| sin_port | WORD | Порт |
| sin_addr | DWORD | IP-адрес, к которому будет привязан сокет.<br>Входные аргументы:<br>• SOCKET_INADDR_ANY (все адреса локального хоста) – TCP и UDP сервер (SysSockBind);<br>• 32-х битное значение IP-адреса – TCP клиент (SysSockConnect) и UDP клиент (SysSockRecvFrom/SysSockSendTo). |
| sin_zero | ARRAY \[0..7\] OF SINT | Дополнение до размера структуры SOCKADDRESS. Поле должно содержать массив нулей и служит только для увеличения размера структуры до стандартных 16 байт. Переменную не обязательно использовать в проекте |

Далее в документе описаны все функции библиотеки.

<a id="topic-122799"></a>

### SysSockCreate

Функция типа данных DINT создает новый сокет и возвращает для него идентификатор (handle) сокета.

**Входные переменные**

| Имя переменной | Тип данных | Описание |
| --- | --- | --- |
| diAddressFamily | DINT | Семейство протоколов создаваемого сокета. Используется значение SOCKET_AF_INET для IPv4. |
| diType | DINT | Тип создаваемого сокета. Для TCP используется SOCKET_STREAM (потоковый сокет), для UDP — SOCKET_DGRAM (датаграммный сокет). |
| diProtocol | DINT | Протокол сокета. Для TCP используется SOCKET_IPPROTO_TCP, для UDP — SOCKET_IPPROTO_UDP. |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>diSocket<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?> <?Pub _font FontColor="#DBB740"
?>DINT<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font
?> <?Pub _font FontColor="#5DA35B"?>(* дескриптор сокета. Объявление переменной для записи <?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>идентификатора сокета *)<?Pub /_font
?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>// Код программы<?Pub /_font?>
<?Pub _font FontColor="#DCDCDC"?>diSocket<?Pub /_font?> <?Pub _font
FontColor="#EF724B"?>:=<?Pub /_font?> <?Pub _font FontColor="#988DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>.<?Pub /_font
?><?Pub _font FontColor="#DCDCDC"?>SysSockCreate<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#988DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>.<?Pub /_font
?><?Pub _font FontColor="#FFFFCC"?>SOCKET_AF_INET<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>,<?Pub /_font?> 
<?Pub _font FontColor="#988DF7"?>SysLibSocket<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>.<?Pub /_font?><?Pub _font FontColor="#FFFFCC"
?>SOCKET_STREAM<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>,<?Pub /_font
?> <?Pub _font FontColor="#988DF7"?>SysLibSocket<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>.<?Pub /_font?><?Pub _font FontColor="#FFF2C5"
?>SOCKET_IPPROTO_TCP<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>)<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>// Комментарии<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_PROGRAM<?Pub /_font?></code></td></tr></tbody></table></div></div>

Семейство IPv4, потоковый сокет, протокол TCP.

При попытке создать сокет в системе, где достигнуто максимальное число сокетов функция SysSockCreate вернёт -1 (SOCKET_INVALID)

Максимальное количество сокетов для ПЛК110 M03 – ХХ по TCP/UDP.

<a id="topic-122800"></a>

### SysSockBind

Функция SysSockBind типа данных BOOL используется только в случае реализации на ПЛК сервера и привязывает сокет к IP адресу и порту. Для привязки функция SysSockBind ссылается на структуру SOCKADDRESS, в которой хранится заданный адрес и порт.

Входные переменные

|   |   |   |
| --- | --- | --- |
| diSocket | DINT | Дескриптор сокета, полученный от функции SysSockCreate |
| pSockAddr | REF_TO_SOCKADRESS | Указатель на переменную типа SOCKADDRESS |
| diSockAddrSize | DINT | Размер структуры SOCKADDRESS в байтах |

Пример для TCP/UDP сервера

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5DA35B"?>// Объявление<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diSocket<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>         <?Pub _font
FontColor="#E7B639"?>DINT<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>         <?Pub _font FontColor="#5DA35B"?>(* Дескриптор сокета *)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>stServerSettings<?Pub /_font
?><?Pub _font FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font
FontColor="#E7B639"?>SysLibSocket<?Pub /_font?><?Pub _font
FontColor="white"?>.<?Pub /_font?><?Pub _font FontColor="#E7B639"
?>SOCKADDRESS<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font
?>  <?Pub _font FontColor="#5DA35B"?>(* Cтруктура для хранения адреса сокета *)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>xBinded<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>          <?Pub _font
FontColor="#E7B639"?>BOOL<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>         <?Pub _font FontColor="#5DA35B"?>(* Результат функции SysSockBind *)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>wPort<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>            <?Pub _font
FontColor="#E7B639"?>WORD<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>         <?Pub _font FontColor="#5DA35B"?>(* Порт сокета *)<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>// Код программы<?Pub /_font?>
<?Pub _font FontColor="gray1"?>stServerSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_family<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.<?Pub /_font
?><?Pub _font FontColor="#FFFFCC"?>SOCKET_AF_INET<?Pub /_font?><?Pub _font
FontColor="white"?>;<?Pub /_font?>
<?Pub _font FontColor="gray1"?>stServerSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_addr<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.<?Pub /_font
?> <?Pub _font FontColor="white"?>SysSockHtonl(<?Pub /_font?><?Pub _font
FontColor="#7B8DF7"?>SysLibSocket<?Pub /_font?><?Pub _font
FontColor="white"?>.<?Pub /_font?><?Pub _font FontColor="#FFFFCC"
?>SOCKET_INADDR_ANY<?Pub /_font?><?Pub _font FontColor="white"?>);<?Pub /_font?>
<?Pub _font FontColor="gray1"?>stServerSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_port<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockHtons<?Pub /_font?> <?Pub _font FontColor="white"?>(wPort);<?Pub /_font?>
<?Pub _font FontColor="gray1"?>xBinded<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockBind(diSocket<?Pub /_font?><?Pub _font FontColor="white"?>,<?Pub /_font?><?Pub _font
FontColor="#009999"?>ADR<?Pub /_font?><?Pub _font FontColor="white"
?>(stServerSettings<?Pub /_font?><?Pub _font FontColor="white"?>),<?Pub /_font?>
<?Pub _font FontColor="#009999"?>SIZEOF<?Pub /_font?><?Pub _font
FontColor="white"?>(stServerSettings<?Pub /_font?><?Pub _font
FontColor="white"?>));<?Pub /_font?></code></td></tr></tbody></table></div></div>

Функция SysSockBind после выполнения возвращает TRUE. Для корректного заполнения структуры SOCKADDRESS следует использовать функции [SysSockHtonl](#topic-122809) и [SysSockHtons](#topic-122810).

<a id="topic-122801"></a>

### SysSockListen

Функция SysSockListen типа данных BOOL задаёт максимальное количество входящих соединений.

Функция используется при настройке обмена по протоколу TCP.

Входные переменные

|   |   |   |
| --- | --- | --- |
| diSocket | DINT | Дескриптор сокета |
| diMaxConnections | DINT | Максимальное количество входящих соединений |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diSocket<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>         <?Pub _font
FontColor="#E7B639"?>DINT<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>       <?Pub _font FontColor="#5DA35B"?>// Дескриптор сокета<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diMaxConnections<?Pub /_font
?><?Pub _font FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font
FontColor="#E7B639"?>DINT<?Pub /_font?> <?Pub _font FontColor="#EF7244"
?>:=<?Pub /_font?> <?Pub _font FontColor="#FF99CC"?>5<?Pub /_font
?><?Pub _font FontColor="white"?>;<?Pub /_font?>  <?Pub _font
FontColor="#5DA35B"?>// Максимальное количество входящих соединений<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>xListened<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>        <?Pub _font
FontColor="#E7B639"?>BOOL<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>       <?Pub _font FontColor="#5DA35B"?>// Результат функции SysSockListen<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="white"?>xListened<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockListen(diSocket<?Pub /_font?><?Pub _font FontColor="white"?>, diMaxConnections<?Pub /_font
?><?Pub _font FontColor="white"?>);<?Pub /_font?></code></td></tr></tbody></table></div></div>

Функция SysSockListen после выполнения возвращает TRUE.

<a id="topic-122802"></a>

### SysSockAccept

Функция SysSockAccept типа данных DINT при подключении клиента создает дескриптор клиентского сокета для установленного соединения.

Функция используется при настройке обмена по протоколу TCP.

Входные переменные

|   |   |   |
| --- | --- | --- |
| diSocket | DINT | Дескриптор серверного сокета |
| pSockAddr | REF_TO SOCKADDRESS | Указатель на переменную типа SOCKADDRESS |
| piSocketAddrSize | REF_TO DWORD | Указатель на размер структуры SOCKADDRESS |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diSocket<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>       <?Pub _font
FontColor="#E7B639"?>DINT<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>      <?Pub _font FontColor="#5DA35B"?>// Дескриптор серверного сокета<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diClientSocket<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font FontColor="#E7B639"
?>DINT<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?>      <?Pub _font FontColor="#5DA35B"?>// Дескриптор клиентского сокета<?Pub /_font
?>
    <?Pub _font FontColor="#7B8DF7"?>stSettings<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>     <?Pub _font FontColor="#E7B639"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.<?Pub /_font
?><?Pub _font FontColor="#E7B639"?>SOCKADDRESS<?Pub /_font?><?Pub _font
FontColor="white"?>;<?Pub /_font?>
    <?Pub _font FontColor="#5DA35B"?>// Структура для хранения адреса сокета<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="white"?>diClientSocket<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockAccept(diSocket<?Pub /_font?><?Pub _font FontColor="white"?>,<?Pub /_font?> <?Pub _font
FontColor="#009999"?>ADR<?Pub /_font?><?Pub _font FontColor="white"
?>(stSettings<?Pub /_font?><?Pub _font FontColor="white"?>),<?Pub /_font
?> 
<?Pub _font FontColor="#009999"?>SIZEOF<?Pub /_font?><?Pub _font
FontColor="white"?>(stSettings<?Pub /_font?><?Pub _font
FontColor="white"?>));<?Pub /_font?></code></td></tr></tbody></table></div></div>

<a id="topic-122803"></a>

### SysSockRecv и SysSockSend. Протокол TCP

Функция **SysSockRecv** типа данных DINT выполняет прием данных и возвращает число считанных байт.

Максимальный буфер приема – 1500 байт

Входные переменные

|   |   |   |
| --- | --- | --- |
| diSocket | DINT | Дескриптор клиентского сокета |
| pbyBuffer | REF_TO DWORD | Указатель на буфер принимаемых данных |
| diBufferSize | DINT | Размер буфера в байтах |
| diFlags | DINT | Флаг определяет параметры приема данных.<br>Входные аргументы: 0 – не поддерживаются |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>diClientSocket<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?> <?Pub _font FontColor="#DBB740"
?>DINT<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font
?>                  <?Pub _font FontColor="#5DA35B"?>// дескриптор клиентского сокета<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>abyRead<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>        <?Pub _font
FontColor="#7F73E9"?>ARRAY<?Pub /_font?> <?Pub _font FontColor="#E1E1E1"
?>[<?Pub /_font?><?Pub _font FontColor="#F3A1DD"?>1<?Pub /_font?><?Pub _font
FontColor="#FFB49C"?>..<?Pub /_font?><?Pub _font FontColor="#F3A1DD"
?>10<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>]<?Pub /_font?> <?Pub _font FontColor="#8080FF"?>OF<?Pub /_font?> <?Pub _font
FontColor="#DBB740"?>BYTE<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"?>// переменная для приема сообщения<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>diRecvBytes<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>    <?Pub _font FontColor="#DBB740"
?>DINT<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font
?>                  <?Pub _font FontColor="#5DA35B"?>// количество считанных байт<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>c_diFlags<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>      <?Pub _font
FontColor="#DBB740"?>DINT<?Pub /_font?> <?Pub _font FontColor="#EF724B"
?>:=<?Pub /_font?> <?Pub _font FontColor="#F3A1DD"?>0<?Pub /_font
?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font?>             <?Pub _font
FontColor="#5DA35B"?>// константа, флаг<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="#DCDCDC"?>diRecvBytes<?Pub /_font?> <?Pub _font
FontColor="#EF724B"?>:=<?Pub /_font?> <?Pub _font FontColor="#988DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>.<?Pub /_font
?><?Pub _font FontColor="#DCDCDC"?>SysSockRecv<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>diClientSocket,<?Pub /_font?> 
               <?Pub _font FontColor="#19A3B5"?>REF<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>abyRead<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>),<?Pub /_font
?> 
               <?Pub _font FontColor="#19A3B5"?>ULINT_TO_DINT<?Pub /_font
?><?Pub _font FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font
FontColor="#19A3B5"?>SIZEOF<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"?>abyRead<?Pub /_font
?><?Pub _font FontColor="#E1E1E1"?>)<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>),<?Pub /_font?> <?Pub _font FontColor="#DCDCDC"
?>c_diFlags<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>)<?Pub /_font
?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_PROGRAM<?Pub /_font?></code></td></tr></tbody></table></div></div>

Для приема можно использовать любые типы данных, например переменные типа STRING.

Функция **SysSockSend** типа данных DINT выполняет передачу данных и возвращает число переданных байт.

Максимальный буфер передачи – 1500 байт.

Входные переменные

|   |   |   |
| --- | --- | --- |
| diSocket | DINT | Дескриптор клиентского сокета |
| pbyBuffer | REF_TO DWORD | Указатель на буфер для передачи данных |
| diBufferSize | DINT | Размер буфера |
| diFlags | DINT | Флаг определяет параметры передачи данных.<br>Входные аргументы: 0 – не поддерживаются |

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>    <?Pub _font
FontColor="#988DF7"?>diClientSocket<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?> <?Pub _font FontColor="#DBB740"
?>DINT<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font
?>                  <?Pub _font FontColor="#5DA35B"?>// дескриптор клиентского сокета<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>abySend<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>        <?Pub _font
FontColor="#7F73E9"?>ARRAY<?Pub /_font?> <?Pub _font FontColor="#E1E1E1"
?>[<?Pub /_font?><?Pub _font FontColor="#F3A1DD"?>1<?Pub /_font?><?Pub _font
FontColor="#FFB49C"?>..<?Pub /_font?><?Pub _font FontColor="#F3A1DD"
?>10<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>]<?Pub /_font?> <?Pub _font FontColor="#8080FF"?>OF<?Pub /_font?> <?Pub _font
FontColor="#DBB740"?>BYTE<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"?>// переменная для передачи сообщения<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>diSendBytes<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>    <?Pub _font FontColor="#DBB740"
?>DINT<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font
?>                  <?Pub _font FontColor="#5DA35B"?>// количество переданных байт<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>c_diFlags<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>      <?Pub _font
FontColor="#DBB740"?>DINT<?Pub /_font?> <?Pub _font FontColor="#EF724B"
?>:=<?Pub /_font?> <?Pub _font FontColor="#F3A1DD"?>0<?Pub /_font
?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font?>             <?Pub _font
FontColor="#5DA35B"?>// константа, флаг<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="#DCDCDC"?>diSendBytes<?Pub /_font?> <?Pub _font
FontColor="#EF724B"?>:=<?Pub /_font?> <?Pub _font FontColor="#988DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>.<?Pub /_font
?><?Pub _font FontColor="#DCDCDC"?>SysSockSend<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>diClientSocket<?Pub /_font?><?Pub _font FontColor="#EF724B"?>,<?Pub /_font
?> 
               <?Pub _font FontColor="#19A3B5"?>REF<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>abySend<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>)<?Pub /_font
?><?Pub _font FontColor="#EF724B"?>,<?Pub /_font?> <?Pub _font
FontColor="#19A3B5"?>ULINT_TO_DINT<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#19A3B5"
?>SIZEOF<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>(<?Pub /_font
?><?Pub _font FontColor="#DCDCDC"?>abySend<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>)<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>)<?Pub /_font?><?Pub _font FontColor="#EF724B"?>,<?Pub /_font?> <?Pub _font
FontColor="#DCDCDC"?>c_diFlags<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>)<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>;<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_PROGRAM<?Pub /_font?></code></td></tr></tbody></table></div></div>

<a id="topic-122804"></a>

### SysSockRecvFrom и SysSockSendTo. Протокол UDP

Функция **SysSockRecvFrom** типа данных DINT выполняет прием данных и возвращает число считанных байт.

Максимальный буфер приема – 1500 байт

Входные переменные

|   |   |   |
| --- | --- | --- |
| diSocket | DINT | Дескриптор клиентского сокета |
| pbyBuffer | REF_TO DWORD | Указатель на буфер принимаемых данных |
| diBufferSize | DINT | Размер буфера |
| diFlags | DINT | Флаг определяет параметры приема данных.<br>Входные аргументы: 0 – не поддерживаются. |
| pSockAddr | REF_TO SOCKADDRESS | Указатель на переменную типа SOCKADDRESS |
| diSockAddrSize | DINT | Размер структуры SOCKADDRESS |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>stClientSettings<?Pub /_font
?><?Pub _font FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font
FontColor="#E7B639"?>SOCKADDRESS<?Pub /_font?><?Pub _font
FontColor="white"?>;<?Pub /_font?>             <?Pub _font
FontColor="#5DA35B"?>(*Структура для хранения адреса 
сокета*)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>dwIPaddr<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>         <?Pub _font
FontColor="#E7B639"?>DWORD<?Pub /_font?> <?Pub _font FontColor="#EF7244"
?>:=<?Pub /_font?> <?Pub _font FontColor="#FF99CC"?>16#0A00060A<?Pub /_font
?><?Pub _font FontColor="white"?>;<?Pub /_font?>    <?Pub _font
FontColor="#5DA35B"?>(*IP-адрес сервера: 10.0.6.10*)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>wPort<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>            <?Pub _font
FontColor="#E7B639"?>WORD<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>                    <?Pub _font FontColor="#5DA35B"
?>(*Порт сокета*)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diClientSocket<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>   <?Pub _font FontColor="#E7B639"
?>DINT<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?>                    <?Pub _font FontColor="#5DA35B"?>(*Дескриптор клиентского сокета*)<?Pub /_font
?>
    <?Pub _font FontColor="#7B8DF7"?>abyRead<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>ARRAY<?Pub /_font?> <?Pub _font FontColor="white"?>[<?Pub /_font
?><?Pub _font FontColor="#FF99CC"?>1<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>..<?Pub /_font?><?Pub _font FontColor="#7B8DF7"
?>c_iBufferSize<?Pub /_font?><?Pub _font FontColor="white"?>]<?Pub /_font
?> <?Pub _font FontColor="#7B8DF7"?>OF<?Pub /_font?> <?Pub _font
FontColor="#E7B639"?>BYTE<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"?>(*Переменная для приема 
сообщения*)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diRecvBytes<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>      <?Pub _font
FontColor="#E7B639"?>DINT<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>                    <?Pub _font FontColor="#5DA35B"
?>(*Количество считанных байт*)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>c_diFlags<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>        <?Pub _font
FontColor="#E7B639"?>DINT<?Pub /_font?> <?Pub _font FontColor="#EF7244"
?>:=<?Pub /_font?> <?Pub _font FontColor="#FF99CC"?>0<?Pub /_font
?><?Pub _font FontColor="white"?>;<?Pub /_font?>               <?Pub _font
FontColor="#5DA35B"?>(*Константа, флаг*)<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="gray1"?>stClientSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_family<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.<?Pub /_font
?><?Pub _font FontColor="#FFFFCC"?>SOCKET_AF_INET<?Pub /_font?><?Pub _font
FontColor="white"?>;<?Pub /_font?>
<?Pub _font FontColor="gray1"?>stClientSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_addr<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.<?Pub /_font
?><?Pub _font FontColor="gray1"?>SysSockHtonl<?Pub /_font?><?Pub _font
FontColor="white"?>(dwIPaddr<?Pub /_font?><?Pub _font FontColor="white"
?>);<?Pub /_font?>
<?Pub _font FontColor="gray1"?>stClientSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_port<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.<?Pub /_font
?><?Pub _font FontColor="gray1"?>SysSockHtons<?Pub /_font?><?Pub _font
FontColor="white"?>(wPort<?Pub /_font?><?Pub _font FontColor="white"
?>);<?Pub /_font?>
<?Pub _font FontColor="gray1"?>diRecvBytes<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockRecvFrom(diClientSocket<?Pub /_font?><?Pub _font FontColor="white"?>,<?Pub /_font?>
<?Pub _font FontColor="#009999"?>REF<?Pub /_font?><?Pub _font
FontColor="white"?>(abyRead<?Pub /_font?><?Pub _font FontColor="white"
?>),<?Pub /_font?> <?Pub _font FontColor="#009999"?>ULINT_TO_DINT<?Pub /_font
?> <?Pub _font FontColor="white"?>(<?Pub /_font?>
<?Pub _font FontColor="#009999"?>SIZEOF<?Pub /_font?><?Pub _font
FontColor="white"?>(abyRead<?Pub /_font?><?Pub _font FontColor="white"
?>)), c_diFlags<?Pub /_font?><?Pub _font FontColor="white"?>,<?Pub /_font
?> 
<?Pub _font FontColor="#009999"?>REF<?Pub /_font?><?Pub _font
FontColor="white"?>(stClientSettings<?Pub /_font?><?Pub _font
FontColor="white"?>),<?Pub /_font?> <?Pub _font FontColor="#009999"
?>ULINT_TO_DINT<?Pub /_font?> <?Pub _font FontColor="white"?>(<?Pub /_font
?> 
<?Pub _font FontColor="#009999"?>SIZEOF<?Pub /_font?><?Pub _font
FontColor="white"?>(stClientSettings<?Pub /_font?><?Pub _font
FontColor="white"?>)));<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_PROGRAM<?Pub /_font?></code></td></tr></tbody></table></div></div>

Для приема можно использовать любые типы данных, например переменные типа STRING.

Функция **SysSockSendTo** типа данных DINT выполняет передачу данных и возвращает число переданных байт.

Максимальный буфер передачи – 1500 байт.

Входные переменные

|   |   |   |
| --- | --- | --- |
| diSocket | DINT | Дескриптор клиентского сокета |
| pbyBuffer | REF_TO DWORD | Указатель на буфер для передачи данных |
| diBufferSize | DINT | Размер буфера |
| diFlags | DINT | Флаг определяет параметры передачи данных.<br>Входные аргументы: 0 – не поддерживаются. |
| pSockAddr | REF_TO SOCKADDRESS | Указатель на переменную типа SOCKADDRESS |
| diSockAddrSize | DINT | Размер структуры SOCKADDRESS |

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
   <?Pub _font FontColor="#988DF7"?>stClientSettings<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?> <?Pub _font FontColor="#DBB740"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>.<?Pub /_font
?><?Pub _font FontColor="#DBB740"?>SOCKADDRESS<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"
?>(*структура для хранения <?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>                                                адреса сокета*)<?Pub /_font?>
   <?Pub _font FontColor="#988DF7"?>dwIPaddr<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>         <?Pub _font
FontColor="#DBB740"?>DWORD<?Pub /_font?> <?Pub _font FontColor="#EF724B"
?>:=<?Pub /_font?> <?Pub _font FontColor="#F3A1DD"?>16#0A00060A<?Pub /_font
?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font?>     <?Pub _font
FontColor="#5DA35B"?>// IP-адрес сервера: 10.0.6.10<?Pub /_font?>
   <?Pub _font FontColor="#988DF7"?>wPort<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>            <?Pub _font
FontColor="#DBB740"?>WORD<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>;<?Pub /_font?>                     <?Pub _font FontColor="#5DA35B"
?>// порт сокета<?Pub /_font?>
   <?Pub _font FontColor="#988DF7"?>diClientSocket<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>   <?Pub _font FontColor="#DBB740"
?>DINT<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font
?>                     <?Pub _font FontColor="#5DA35B"?>// дескриптор клиентского сокета<?Pub /_font?>
   <?Pub _font FontColor="#988DF7"?>abySend<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>          <?Pub _font
FontColor="#7F73E9"?>ARRAY<?Pub /_font?> <?Pub _font FontColor="#E1E1E1"
?>[<?Pub /_font?><?Pub _font FontColor="#F3A1DD"?>1<?Pub /_font?><?Pub _font
FontColor="#FFB49C"?>..<?Pub /_font?><?Pub _font FontColor="#F3A1DD"
?>10<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>]<?Pub /_font?> <?Pub _font FontColor="#8080FF"?>OF<?Pub /_font?> <?Pub _font
FontColor="#DBB740"?>BYTE<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>;<?Pub /_font?>    <?Pub _font FontColor="#5DA35B"?>(* переменная для передачи <?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>                                                сообщения*)<?Pub /_font?>
   <?Pub _font FontColor="#988DF7"?>diSendBytes<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>      <?Pub _font
FontColor="#DBB740"?>DINT<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>;<?Pub /_font?>                     <?Pub _font FontColor="#5DA35B"
?>// количество переданных байт<?Pub /_font?>
   <?Pub _font FontColor="#988DF7"?>c_diFlags<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>        <?Pub _font
FontColor="#DBB740"?>DINT<?Pub /_font?> <?Pub _font FontColor="#EF724B"
?>:=<?Pub /_font?> <?Pub _font FontColor="#F3A1DD"?>0<?Pub /_font
?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font?>                <?Pub _font
FontColor="#5DA35B"?>// константа, флаг<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="#DCDCDC"?>stClientSettings<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>.<?Pub /_font?><?Pub _font FontColor="#FFFFCC"
?>sin_family<?Pub /_font?> <?Pub _font FontColor="#EF724B"?>:=<?Pub /_font
?> <?Pub _font FontColor="#988DF7"?>SysLibSocket<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>.<?Pub /_font?><?Pub _font FontColor="#FFFFCC"
?>SOCKET_AF_INET<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font
?>
<?Pub _font FontColor="#DCDCDC"?>stClientSettings<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>.<?Pub /_font?><?Pub _font FontColor="#FFFFCC"
?>sin_addr<?Pub /_font?>   <?Pub _font FontColor="#EF724B"?>:=<?Pub /_font
?> <?Pub _font FontColor="#988DF7"?>SysLibSocket<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>.<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>SysSockHtonl<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>(<?Pub /_font
?><?Pub _font FontColor="#DCDCDC"?>dwIPaddr<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>)<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>;<?Pub /_font?>
<?Pub _font FontColor="#DCDCDC"?>stClientSettings<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>.<?Pub /_font?><?Pub _font FontColor="#FFFFCC"
?>sin_port<?Pub /_font?>   <?Pub _font FontColor="#EF724B"?>:=<?Pub /_font
?> <?Pub _font FontColor="#988DF7"?>SysLibSocket<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>.<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>SysSockHtons<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>(<?Pub /_font
?><?Pub _font FontColor="#DCDCDC"?>wPort<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>)<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>;<?Pub /_font?>
<?Pub _font FontColor="#DCDCDC"?>diSendBytes<?Pub /_font?> <?Pub _font
FontColor="#EF724B"?>:=<?Pub /_font?> <?Pub _font FontColor="#988DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>.<?Pub /_font
?><?Pub _font FontColor="#DCDCDC"?>SysSockSendTo<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>diClientSocket,<?Pub /_font?> 
<?Pub _font FontColor="#19A3B5"?>REF<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>abySend<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>)<?Pub /_font
?><?Pub _font FontColor="#EF724B"?>,<?Pub /_font?> <?Pub _font
FontColor="#19A3B5"?>ULINT_TO_DINT<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#19A3B5"
?>SIZEOF<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>(<?Pub /_font
?><?Pub _font FontColor="#DCDCDC"?>abySend<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>)<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>),<?Pub /_font?> <?Pub _font FontColor="#DCDCDC"?>c_diFlags,<?Pub /_font
?> 
<?Pub _font FontColor="#19A3B5"?>REF<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>stClientSettings<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>),<?Pub /_font?> <?Pub _font FontColor="#19A3B5"?>ULINT_TO_DINT<?Pub /_font
?><?Pub _font FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font
FontColor="#19A3B5"?>SIZEOF<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"?>stClientSettings<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>)<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>)<?Pub /_font?><?Pub _font FontColor="#E1E1E1"
?>)<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_PROGRAM<?Pub /_font?></code></td></tr></tbody></table></div></div>

Для передачи можно использовать любые типы данных, например переменные типа STRING.

<a id="topic-122805"></a>

### SysSockShutdown

Функция **SysSockShutdown** типа данных BOOL выполняет запрет передачи и приема данных.

**Входные переменные**

| Имя переменной | Тип данных | Описание |
| --- | --- | --- |
| diSocket | DINT | Дескриптор сокета |
| diHow | DINT | Аргумент определяет тип запрещаемых действий:<br>• 0 – отключение приема сообщений;<br>• 1 – отключение отправки сообщения;<br>• 2 – отключение приема и отправки сообщения |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diSocket<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>    <?Pub _font FontColor="#E7B639"
?>DINT<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?>      <?Pub _font FontColor="#5DA35B"?>// Дескриптор сокета<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>xShutdowned<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font FontColor="#E7B639"
?>BOOL<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?>      <?Pub _font FontColor="#5DA35B"?>// Результат функции SysSockShutdown<?Pub /_font
?>
    <?Pub _font FontColor="#7B8DF7"?>c_diHow<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>     <?Pub _font FontColor="#E7B639"
?>DINT<?Pub /_font?> <?Pub _font FontColor="#EF7244"?>:=<?Pub /_font
?> <?Pub _font FontColor="#FF99CC"?>2<?Pub /_font?><?Pub _font
FontColor="white"?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"
?>// Константа, определяет тип запрещаемых действий<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="white"?>xShutdowned<?Pub /_font?><?Pub _font
FontColor="#7B8DF7"?><?Pub /_font?><?Pub _font FontColor="#EF7244"
?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"?>SysLibSocket<?Pub /_font
?><?Pub _font FontColor="white"?>.SysSockShutdown(diSocket<?Pub /_font
?><?Pub _font FontColor="white"?>,<?Pub /_font?> <?Pub _font
FontColor="white"?>c_diHow);<?Pub /_font?> <?Pub _font
FontColor="#5DA35B"?>(*После 
выполнения возвращает TRUE*)<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_PROGRAM<?Pub /_font?></code></td></tr></tbody></table></div></div>

<a id="topic-122806"></a>

### SysSockClose

Функция **SysSockClose** типа данных BOOL закрывает сокет.

**Входные переменные**

| Имя переменной | Тип данных | Описание |
| --- | --- | --- |
| diSocket | DINT | Дескриптор сокета |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diSocket<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>    <?Pub _font FontColor="#E7B639"
?>DINT<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?>      <?Pub _font FontColor="#5DA35B"?>// Дескриптор сокета<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>xSockClosed<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font FontColor="#E7B639"
?>BOOL<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?>      <?Pub _font FontColor="#5DA35B"?>// Результат функции SysSockClose<?Pub /_font
?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="white"?>xSockClosed<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockClose(diSocket<?Pub /_font?><?Pub _font FontColor="white"?>);<?Pub /_font?> 
<?Pub _font FontColor="#5DA35B"?>(*После выполнения возвращает TRUE*)<?Pub /_font?></code></td></tr></tbody></table></div></div>

<a id="topic-122807"></a>

### SysSockSetOption

Функция **SysSockSetOption** типа данных BOOL устанавливает параметры, связанные с сокетом.

**Входные переменные**

| Имя переменной | Тип данных | Описание |
| --- | --- | --- |
| diSocket | DINT | Дескриптор сокета |
| diLevel | DINT | Уровень, на котором находится опция. Поддержан уровень для работы с сокетами: SOCKET_SOL |
| diOption | DINT | Опция, которой нужно передать значение.<br>Входные аргументы:<br>• SO_NBIO=0x1014 – установить сокет в неблокирующий режим;<br>• SO_DEBUG=0x00001 – включить запись отладочной информации;<br>• SO_REUSEADDR=0x00004 – разрешить повторное использование локального адреса;<br>• SO_KEEPALIVE=0x00008 – поддерживать соединение;<br>• SO_DONTROUTE=0x00010 – использовать адреса интерфейса;<br>• SO_LINGER=0x00080 – задержка закрытия при наличии данных;<br>• SO_WINSCALE=0x00400 – установить параметр окна масштабирования;<br>• SO_TIMESTAMP=0x00800 – установить опцию отметки времени TCP;<br>• SO_BIGCWND=0x01000 – большое начальное окно перегрузки TCP;<br>• SO_NOSLOWSTART=0x04000 – подавление медленного запуска в этом сокете |
| diOptionValue | REF_TO STRING | Указатель на переменную, в которую после выполнения функции будет записано значение для запрашиваемой опции |
| diOptionLength | REF_TO size_t\* | Размер в байтах переменной |

\***size_t** — это беззнаковый целочисленный тип данных в C и C++ (не поддержан в редакторе ALTA IDE). Его основная задача - представлять размер любого объекта в памяти в байтах, включая массивы. Для корректной работы diOptionLength необходимо присвоить результат SIZEOF, как в примере.

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diSocket<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>       <?Pub _font
FontColor="#E7B639"?>DINT<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>            <?Pub _font FontColor="#5DA35B"?>(*Дескриптор сокета*)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>c_diOption<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>     <?Pub _font FontColor="#E7B639"
?>DINT<?Pub /_font?> <?Pub _font FontColor="#EF7244"?>:=<?Pub /_font
?> <?Pub _font FontColor="#FF99CC"?>16#1014<?Pub /_font?><?Pub _font
FontColor="white"?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"
?>(*Константа, опция SO_NBIO переводит 
в неблокирующий режим*)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diOptionValue<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>  <?Pub _font FontColor="#E7B639"
?>DINT<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?>          <?Pub _font FontColor="#5DA35B"?>(*Значение для запрашиваемой опции*)<?Pub /_font
?>
    <?Pub _font FontColor="#7B8DF7"?>xSetOption<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>     <?Pub _font FontColor="#E7B639"
?>BOOL<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="gray1"?>xSetOption<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockSetOption<?Pub /_font?><?Pub _font FontColor="white"?>(diSocket,<?Pub /_font?> <?Pub _font
FontColor="#7B8DF7"?>SysLibSocket<?Pub /_font?><?Pub _font
FontColor="white"?>.SOL<?Pub /_font?><?Pub _font FontColor="white"
?>, c_diOption<?Pub /_font?><?Pub _font FontColor="white"?>,<?Pub /_font
?> 
<?Pub _font FontColor="#009999"?>ADR<?Pub /_font?><?Pub _font
FontColor="white"?>(diOptionValue<?Pub /_font?><?Pub _font
FontColor="white"?>),<?Pub /_font?> <?Pub _font FontColor="#009999"
?>SIZEOF<?Pub /_font?><?Pub _font FontColor="white"?>(diOptionValue<?Pub /_font?><?Pub _font FontColor="white"?>));<?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>(*После выполнения возвращает TRUE. Детальное описание аргументов дано в 
справочных системах соответствующих ОС*)<?Pub /_font?></code></td></tr></tbody></table></div></div>

<a id="topic-122808"></a>

### SysSockGetOption

Функция **SysSockGetOption** типа данных BOOL считывает значение параметра, связанного с сокетом.

**Входные переменные**

| Имя переменной | Тип данных | Описание |
| --- | --- | --- |
| diSocket | DINT | Дескриптор сокета |
| diLevel | DINT | Уровень, на котором находится опция.<br>Входные аргументы: SOCKET_SOL |
| diOption | DINT | Опция, которой нужно передать значение.<br>Входные аргументы:<br>• SO_ERROR=0x1007 – получить статус ошибки;<br>• SO_RXDATA=0x1011 – получить количество байт recv;<br>• SO_TXDATA=0x1012 – получить количество байт send |
| diOptionValue | REF_TO VOID\* | Указатель на переменную, в которую после выполнения функции будет записано значение для запрашиваемой опции |
| diOptionLength | REF_TO size_t\*\* | Размер в байтах переменной |

\***REF_TO VOID** — это указатель на неопределенный тип данных (не поддержан в редакторе ALTA IDE). Для корректной работы diOptionValue необходимо присвоить указатель, как в примере.

\*\***size_t** — это беззнаковый целочисленный тип данных в C и C++ (не поддержан в редакторе ALTA IDE). Его основная задача - представлять размер любого объекта в памяти в байтах, включая массивы. Для корректной работы diOptionLength необходимо присвоить результат SIZEOF, как в примере.

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>diSocket<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>    <?Pub _font FontColor="#DBB740"
?>DINT<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font
?>          <?Pub _font FontColor="#5DA35B"?>(*дескриптор сокета*)<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>c_diSoError<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?> <?Pub _font FontColor="#DBB740"
?>DINT<?Pub /_font?><?Pub _font FontColor="#EF724B"?>:=<?Pub /_font
?><?Pub _font FontColor="#F3A1DD"?>16#1007<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"
?>(*константа, опция SO_ERROR позволяет <?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>                                 получить статус ошибки*)<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>diOption<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>    <?Pub _font FontColor="#DBB740"
?>DINT<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font
?>          <?Pub _font FontColor="#5DA35B"?>(*после выполнения функции будет записано <?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>                                 значение для запрашиваемой опции *)<?Pub /_font?>
    <?Pub _font FontColor="#988DF7"?>xGetOption<?Pub /_font?><?Pub _font
FontColor="#EF724B"?>:<?Pub /_font?>  <?Pub _font FontColor="#DBB740"
?>DINT<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>;<?Pub /_font
?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>// Программа<?Pub /_font?>
<?Pub _font FontColor="#DCDCDC"?>xGetOption<?Pub /_font?> <?Pub _font
FontColor="#EF724B"?>:=<?Pub /_font?> <?Pub _font FontColor="#988DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>.<?Pub /_font
?><?Pub _font FontColor="#DCDCDC"?>SysSockGetOption<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>diSocket,<?Pub /_font?> 
              <?Pub _font FontColor="#988DF7"?>SysLibSocket<?Pub /_font
?><?Pub _font FontColor="#E1E1E1"?>.<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>SOCKET_SOL<?Pub /_font?> <?Pub _font
FontColor="#DCDCDC"?>, c_diSoError,<?Pub /_font?> 
              <?Pub _font FontColor="#19A3B5"?>ADR<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>diOption<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>),<?Pub /_font
?> <?Pub _font FontColor="#19A3B5"?>SIZEOF<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>(<?Pub /_font?><?Pub _font FontColor="#DCDCDC"
?>diOption<?Pub /_font?><?Pub _font FontColor="#E1E1E1"?>)<?Pub /_font
?><?Pub _font FontColor="#E1E1E1"?>)<?Pub /_font?><?Pub _font
FontColor="#E1E1E1"?>;<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_PROGRAM<?Pub /_font?></code></td></tr></tbody></table></div></div>

<a id="topic-122809"></a>

### SysSockHtonl

Функция **SysSockHtonl**(Host to Network Long) типа данных DWORD конвертирует переменную типа DWORD в соответствии с порядком байт в сетях TCP/IP.

**Входные переменные**

| Имя переменной | Тип данных | Описание |
| --- | --- | --- |
| dwHost | DWORD | Значение для конвертирования |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>dwIPaddr<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>   <?Pub _font FontColor="#E7B639"
?>DWORD<?Pub /_font?> <?Pub _font FontColor="#EF7244"?>:=<?Pub /_font
?> <?Pub _font FontColor="#FF99CC"?>16#0A021478<?Pub /_font?><?Pub _font
FontColor="white"?>;<?Pub /_font?>   <?Pub _font FontColor="#5DA35B"
?>// IP-адрес формата DWORD, например: 16#0A021478<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>stSettings<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font FontColor="#E7B639"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.<?Pub /_font
?><?Pub _font FontColor="#E7B639"?>SOCKADDRESS<?Pub /_font?><?Pub _font
FontColor="white"?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"
?>// Структура для хранения адреса сокета<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="gray1"?>stSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_addr<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockHtonl<?Pub /_font?><?Pub _font FontColor="white"?>(dwIPaddr<?Pub /_font?><?Pub _font
FontColor="white"?>);<?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>(*После преобразования в переменную stSettings.sin_addr запишется 16#7814020A*)<?Pub /_font?></code></td></tr></tbody></table></div></div>

<a id="topic-122810"></a>

### SysSockHtons

Функция **SysSockHtons**(Host to Network Short) типа данных WORD конвертирует переменную типа WORD в соответствии с порядком байт в сетях TCP/IP.

**Входные переменные**

| Имя переменной | Тип данных | Описание |
| --- | --- | --- |
| wHost | WORD | Значение для конвертирования |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>wPort<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>      <?Pub _font
FontColor="#E7B639"?>WORD<?Pub /_font?> <?Pub _font FontColor="#EF7244"
?>:=<?Pub /_font?> <?Pub _font FontColor="#FF99CC"?>16#01F6<?Pub /_font
?><?Pub _font FontColor="white"?>;<?Pub /_font?>              <?Pub _font
FontColor="#5DA35B"?>// Порт сокета, например, 502<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>stSettings<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font FontColor="#E7B639"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.<?Pub /_font
?><?Pub _font FontColor="#E7B639"?>SOCKADDRESS<?Pub /_font?><?Pub _font
FontColor="white"?>;<?Pub /_font?>     <?Pub _font FontColor="#5DA35B"
?>// Структура для хранения адреса сокета<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="white"?>stSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_port<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockHtons<?Pub /_font?><?Pub _font FontColor="white"?>(wPort<?Pub /_font?><?Pub _font
FontColor="white"?>);<?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>(*После преобразования в переменную stSettings.sin_port запишется 16#F601*)<?Pub /_font?></code></td></tr></tbody></table></div></div>

<a id="topic-122811"></a>

### SysSockNtohl

Функция **SysSockNtohl** (Network to Host Long) типа данных DWORD конвертирует из порядка байт в сетях TCP/IP в переменную типа DWORD.

**Входные переменные**

| Имя переменной | Тип данных | Описание |
| --- | --- | --- |
| dwNet | DWORD | Значение для конвертирования |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>dwIPaddr<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>   <?Pub _font FontColor="#E7B639"
?>DWORD<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font
?>                    <?Pub _font FontColor="#5DA35B"?>// IP-адрес формата DWORD<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>stSettings<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font FontColor="#E7B639"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.<?Pub /_font
?><?Pub _font FontColor="#E7B639"?>SOCKADDRESS<?Pub /_font?><?Pub _font
FontColor="white"?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"
?>// Структура для хранения адреса сокета<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="white"?>dwIPaddr<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockNtohl<?Pub /_font?><?Pub _font FontColor="white"?>(stSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_addr<?Pub /_font?> <?Pub _font
FontColor="white"?>);<?Pub /_font?> <?Pub _font FontColor="#5DA35B"
?>(*Допустим, переменная равна 
16#7814020A*)<?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>(*После преобразования в переменную dwIPaddr запишется 16#0A021478 
(10.2.20.120)*)<?Pub /_font?></code></td></tr></tbody></table></div></div>

<a id="topic-122812"></a>

### SysSockNtohs

Функция **SysSockNtohs** (Network to Host Short) типа данных WORD конвертирует из порядка байт в сетях TCP/IP в переменную типа WORD.

**Входные переменные**

| Имя переменной | Тип данных | Описание |
| --- | --- | --- |
| wNet | WORD | Значение для конвертирования |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>wPort<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>      <?Pub _font
FontColor="#E7B639"?>WORD<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>                      <?Pub _font FontColor="#5DA35B"
?>// Порт сокета<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>stSettings<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font FontColor="#E7B639"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.<?Pub /_font
?><?Pub _font FontColor="#E7B639"?>SOCKADDRESS<?Pub /_font?><?Pub _font
FontColor="white"?>;<?Pub /_font?>  <?Pub _font FontColor="#5DA35B"
?>// Структура для хранения адреса сокета<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="gray1"?>wPort<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockNtohs<?Pub /_font?><?Pub _font FontColor="white"?>(stSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_port<?Pub /_font?> <?Pub _font
FontColor="white"?>);<?Pub /_font?> <?Pub _font FontColor="#5DA35B"
?>(*Допустим, переменная равна 
16#F601*)<?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>(*После преобразования в переменную wPort запишется 16#01F6 (502)*)<?Pub /_font?></code></td></tr></tbody></table></div></div>

<a id="topic-122813"></a>

### SysSockConnect

Функция **SysSockConnect** типа данных BOOL выполняет подключение к серверному сокету по IP-адресу и порту.

**Входные переменные**

| Имя переменной | Тип данных | Описание |
| --- | --- | --- |
| diSocket | DINT | Дескриптор клиентского сокета |
| pSockAddr | REF_TO SOCKADDRESS | Указатель на переменную типа SOCKADDRESS |
| diSockAddrSize | DINT | Размер структуры SOCKADDRESS |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>stClientSettings<?Pub /_font
?><?Pub _font FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font
FontColor="#E7B639"?>SysLibSocket<?Pub /_font?><?Pub _font
FontColor="white"?>.<?Pub /_font?><?Pub _font FontColor="#E7B639"
?>SOCKADDR<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font
?> <?Pub _font FontColor="#5DA35B"?>(*Структура для хранения адреса 
сокета*)<?Pub /_font?>
  <?Pub _font FontColor="#7B8DF7"?> dwIPaddr<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>         <?Pub _font
FontColor="#E7B639"?>DWORD<?Pub /_font?> <?Pub _font FontColor="#EF7244"
?>:=<?Pub /_font?> <?Pub _font FontColor="#FF99CC"?>16#0A00060A<?Pub /_font
?><?Pub _font FontColor="white"?>;<?Pub /_font?> <?Pub _font
FontColor="#5DA35B"?>(*IP-адрес сервера: 10.0.6.10*)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>wPort<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>            <?Pub _font
FontColor="#E7B639"?>WORD<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>                  <?Pub _font FontColor="#5DA35B"
?>(*Порт сокета*)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diSocket<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>         <?Pub _font
FontColor="#E7B639"?>DINT<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>                  <?Pub _font FontColor="#5DA35B"
?>(*Дескриптор сокета*)<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>xConnected<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>       <?Pub _font
FontColor="#E7B639"?>BOOL<?Pub /_font?><?Pub _font FontColor="white"
?>;<?Pub /_font?>                  <?Pub _font FontColor="#5DA35B"
?>(*Результат функции SysSockConnect*)<?Pub /_font?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="gray1"?>stClientSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_family<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="#FFFFCC"?>.SOCKET_AF_INET<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?>
<?Pub _font FontColor="gray1"?>stClientSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_addr<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockHtonl<?Pub /_font?><?Pub _font FontColor="white"?>(dwIPaddr<?Pub /_font?><?Pub _font
FontColor="white"?>);<?Pub /_font?>
<?Pub _font FontColor="gray1"?>stClientSettings<?Pub /_font?><?Pub _font
FontColor="#FFFFCC"?>.sin_port<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockHtons<?Pub /_font?><?Pub _font FontColor="white"?>(wPort<?Pub /_font?><?Pub _font
FontColor="white"?>);<?Pub /_font?>
<?Pub _font FontColor="gray1"?>xConnected<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SysLibSocket<?Pub /_font?><?Pub _font FontColor="white"?>.SysSockConnect<?Pub /_font?><?Pub _font FontColor="white"?>(diSocket<?Pub /_font?><?Pub _font
FontColor="white"?>,<?Pub /_font?> 
<?Pub _font FontColor="#009999"?>REF<?Pub /_font?><?Pub _font
FontColor="white"?>(stClientSettings<?Pub /_font?><?Pub _font
FontColor="white"?>),<?Pub /_font?>
<?Pub _font FontColor="#009999"?>ULINT_TO_DINT<?Pub /_font?><?Pub _font
FontColor="white"?>(<?Pub /_font?><?Pub _font FontColor="#009999"
?>SIZEOF<?Pub /_font?><?Pub _font FontColor="white"?>(stClientSettings<?Pub /_font?><?Pub _font FontColor="white"?>)));<?Pub /_font?>
<?Pub _font FontColor="#5DA35B"?>(*В неблокирующем режиме факт установки соединения можно определить только 
косвенным путем, используя функции SysSockSend и SysSockRecv. 
После выполнения функция SysSockConnect всегда возвращает FALSE*)<?Pub /_font
?>
<?Pub _font FontColor="#5684DD"?>END_PROGRAM<?Pub /_font?></code></td></tr></tbody></table></div></div>

<a id="topic-122814"></a>

### SysSockIoctl

Функция **SysSockIoctl** типа данных DINT поддерживает только команду SOCKET_FIONREAD для контроллеров ПЛК110 \[M03\]. Эта команда позволяет собирать входящие сообщения в один буфер. Затем можно вывести весь собранный буфер через функцию приема SysSockRecv/SysSockRecvFrom.

**Входные переменные**

| Имя переменной | Тип данных | Описание |
| --- | --- | --- |
| diSocket | DINT | Дескриптор сокета |
| diCommand | DINT | Команда, которую нужно применить к сокету.<br>Допустимые команды:<br>• SOCKET_FIONREAD (собирает входящие сообщения в один буфер) |
| piParameter | REF_TO DWORD | Указатель на параметр, который указывает объем данных в буфере в байтах |

Пример

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#2E3136"?><code><?Pub _font FontColor="#5684DD"?>VAR<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>hSocket<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>     <?Pub _font FontColor="#E7B639"
?>DINT<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"?>//дескриптор сокета<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diParameter<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?> <?Pub _font FontColor="#E7B639"
?>DINT<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"?>//переменная содержит размер входящего сообщения в байтах<?Pub /_font?>
    <?Pub _font FontColor="#7B8DF7"?>diReturn<?Pub /_font?><?Pub _font
FontColor="#EF7244"?>:<?Pub /_font?>    <?Pub _font FontColor="#E7B639"
?>DINT<?Pub /_font?><?Pub _font FontColor="white"?>;<?Pub /_font?> <?Pub _font FontColor="#5DA35B"?>//при поступлении данных возвращает 1<?Pub /_font
?>
<?Pub _font FontColor="#5684DD"?>END_VAR<?Pub /_font?>
<?Pub _font FontColor="#7B8DF7"?>diReturn<?Pub /_font?> <?Pub _font
FontColor="#EF7244"?>:=<?Pub /_font?> <?Pub _font FontColor="#009999"
?>SysSockIoctl<?Pub /_font?><?Pub _font FontColor="white"?>(<?Pub /_font
?><?Pub _font FontColor="#7B8DF7"?>hSocket<?Pub /_font?><?Pub _font
FontColor="white"?>,<?Pub /_font?> <?Pub _font FontColor="#7B8DF7"
?>SOCKET_FIONREAD<?Pub /_font?><?Pub _font FontColor="white"?>,<?Pub /_font
?>  <?Pub _font FontColor="#009999"?>REF<?Pub /_font?><?Pub _font
FontColor="white"?>(<?Pub /_font?><?Pub _font FontColor="#7B8DF7"
?>diParameter<?Pub /_font?><?Pub _font FontColor="white"?>));<?Pub /_font
?>
<?Pub _font FontColor="#5DA35B"?>(*Получить объем входных данных можно до функции приема сообщения 
SysSockRecv/SysSockRecvFrom. После вызова функции SysSockRecv/SysSockRecvFrom 
переменная diParameter, в которой хранится количество накопленных байт, 
очищается и в буфер принимаемых данных записывается буфер накопившихся данных*)<?Pub /_font?></code></td></tr></tbody></table></div></div>
