1. Настройка сети

 Работа по сети осуществляется в RK7 библиотекой NetKern.DLL (DOS и WIN). Библиотека использует errors32.dll, dllman.dll, thread32.dll (разные для DOS, WIN), borlndmm.dll (разные для DOS, WIN) и одну или несколько библиотек протоколов: tcpsoc.dll(WIN), nbhdup.dll(разные для DOS, WIN), spxsoc.dll(WIN), localnet.dll(DOS и WIN), tcpdos.dll(DOS), spx_dos.dll(DOS).
 Типичная проблема сети – не работает динамическое разрешение имён. В этом случае надо явно прописывать соответствие адреса имени (для TCP/IP в секции [TCPDNS])

2. Описание секций в INI-файле

2.1. Секция [NETKERN]

 Основные настройки сети лежат в секции [NETKERN] инициализационного INI-файла, (в скобках значения по умолчанию):

CANCELONDISCONNECT = 1 – При 0 ждёт реконнекта на клиенте и пытается достучаться к клиенту с сервера в случае дисконнекта после получения (отправки) RPC запроса.

CRYPT = 1 – шифрование при отправке

FILEMANAGERPATH = u: – Базовый путь для функций работы с файлами (всегда прибавляется к имени файла). Отдельно обрабатывается путь * - все диски.

IGNOREERRORSFROMSERVER = 1 – При значении 0, стек кодов ошибок, переданный с сервера в случае ошибки выполнения на сервере, будет сохраняться в файле ошибок.

LOADALLPROTOCOLS = 1 – При 0 выходит из RPCInitEx при первом загруженном протоколе, остальные загружаются асинхронно в процессе работы. При 1 не выходит, пока не загрузит все протоколы.

MAXSENDRETRYS (2-CANCELONDISCONNECT) – Количество попыток отправки блока данных

MAXBLOCKSIZE = 20000000 – Максимальный размер пакета (например, возвращаемых данных RPC процедуры). Должен быть одинаковым и на клиенте и на сервере.

MINPACKSIZE = 15000 – минимальный размер блока для упаковки. В случае SLOWCONNECT=1 в настройках протокола с одной из сторон, используется значение в 10 раз меньше.

MINPACKDELTA = 1000 – минимальное уменьшение размера при упаковке. В случае SLOWCONNECT=1 в настройках протокола с одной из сторон, используется значение в 10 раз меньше.

PROTOCOLS = PROTOCOL\*.DLL – Маски поиска файлов DLL драйверов через «;». Если необходимо обращаться к самому себе(например, сервер на кассе), необходимо использовать протокол localnet.dll.

RETRYRECEIVE = not CANCELONDISCONNECT – Ждать от клиента реконнекта для продолжения получения пакета данных.

ROUTERCOUNT = 2 – Количество задач, занимающихся роутингом.

TESTMESSAGES = 0 – При 1 выводит в файл отладки журнал с сетевыми операциями

ALLSENDLOG = "" – Если значение не пустое, то это должен быть каталог (с завершающим «\»), куда будут складываться файлы с отсылаемыми данными.

TIMEOUT = (30000/180000) – мс. – таймаут ожидания handshake и таймаут ожидания очереди на отправку по соединению (в очереди между разные задачи, использующие одно соединение). Если в настройках протокола задан SLOWCONNECT=1, то таймаут ожидания очереди будет не меньше 180000, даже если задать меньшее значение.

2.2. Секция [TCPSOC] – настройка драйвера TCP для Windows

 Драйвер считывает из ini файла раздел [TCPSOC] записи (в скобках значения по умолчанию):

ASYNCHCONNECT = 1 – выполнять попытку подключения асинхронно

CHECKSELFNAME = 0 – попытаться найти собственное имя при инициализации (чтобы исключить дублирование).

KEEPALIVE = 1 – посылать запросы keepalive

LISTEN = 1 – Ждать подключения от других

MAXBUFFER = 65280 – максимальный размер отсылаемых одной командой данных

SLOWCONNECT = 0 – при значении 1 изменяет значения по умолчанию для MAXBUFFER (4096), TIMEOUT (20000). Кроме того, устанавливается флаг типа драйвера pfSlowConnect, по которому используются другие тайм-ауты внутри NetKern.

DNSFILE = tcpdns.txt – имя файла расшифровки имён.

Формат записи в файле расшифровки имён:

Имя адрес[:порт]

Адрес – разделённый точками Internet адрес или имя компьютера в локальной сети или DNS имя
Порт - либо десятичный, либо шестнадцатеричный (предваряемый знаком $). По умолчанию, порт = PORT.

Например, для имён АА и CC:
 

AA 198.154.196.105:5150
CC COMPUTER1:5155

DNSSECTION (TCPDNS) – секция в том же файле, содержащая расшифровки имён.

Формат записи в секции расшифровки имён:

Имя = адрес[:порт]

Например, для имён АА и CC:

[TCPDNS]
AA=198.154.196.105:5150
CC=198.154.196.105:5155

PORT = 5150 – номер порта для входящих соединений. Если порт=5150 и будет ошибка, что порт занят, номер увеличится на 1 и т.д.

PRIORITY = 50 – приоритет драйвера по сравнению с остальными (меньшие номера просматриваются первыми)

TIMEOUT = 4000 – таймаут на операцию отправки/получения блока размером MAXBUFFER или коннекта при ASYNCHCONNECT=1

USEINTERNETDNS =0 – при 1 драйвер будет пытаться найти имя в интернетном DNS, при 1 игнорируется SENDTO255IP

RECEIVELOG = "name" – имя файла для журналирования поступлений

SENDLOG = "name" – имя файла для журналирования отправлений

UDP_BROADCAST_PORT = 5160 – номер порта для обмена сообщениями (в том числе широковещательными) для определения адреса по имени, должен быть одинаковым по всей сети

Примечание: Для отключения широковещательных (broadcast) сообщений от любого сервера необходимо установить UDP_BROADCAST_PORT = 0

SERVERNODELAY = 0 – при значении 1 для входящих соединений отключает работу алгоритма Nagle, что приводит к ускорению отклика, но может привести к сужению канала.

CLIENTNODELAY = 0 – то же, что SERVERNODELAY, но для исходящих соединений

WAITBEFORECLOSE = 0 – при 1 будет ждать завершения сетевых операций при программном разрыве соединения.

SENDTO255IP = 0 – при 1 при невозможности узнать адрес по имени пытается достучаться до всех 254 адресов подсети (USEINTERNETDNS должен быть 0)

2.3. Секция [TCPDOS] – настройка драйвера TCP для DOS32

 Драйвер считывает из ini файла раздел [TCPDOS], записи (в скобках значения по умолчанию):

ASYNCHCONNECT = 1 – выполнять попытку подключения асинхронно

CHECKSELFNAME = 0 – попытаться найти собственное имя при инициализации (чтобы исключить дублирование).

LISTEN = 1 – Ждать подключения от других

DOSBUFFERSIZE = 8192 – размер памяти, выделяемой в нижней памяти DOS, и использующейся как для отправки данных, так и для получения.

MAXBUFFER = DOSBUFFERSIZE – максимальный размер отсылаемых одной командой данных, не больше DOSBUFFERSIZE

SLOWCONNECT = 0 – при значении 1 изменяет значения по умолчанию для MAXBUFFER (4096), TIMEOUT (20000). Кроме того, устанавливается флаг типа драйвера pfSlowConnect, по которому используются другие тайм-ауты внутри NetKern.

DNSFILE = tcpdns.txt – см. DNSFILE

DNSSECTION (TCPDNS) – см. DNSSECTION

PORT = 5150 – номер порта для входящих соединений

PRIORITY = 50 – приоритет драйвера по сравнению с остальными (меньшие номера просматриваются первыми)

UDP_BROADCAST_PORT = 5160 – номер порта для обмена сообщениями (в том числе широковещательными) для определения адреса по имени, должен быть одинаковым по всей сети

SENDTO255IP = 0 – при 1 при невозможности узнать адрес по имени пытается достучаться до всех 255 адресов подсети

TIMEOUT = 4000 – таймаут на операцию отправки/получения блока размером MAXBUFFER или коннекта при ASYNCHCONNECT=1

2.4. Секция [TCPDNS]

См. TCPSOC

2.5. Секция [NB] – настройки драйвера NetBIOS (nb.dll, nbhdup.dll)

Драйверы существует в двух версиях – для DOS и для Win32.
Драйвер считывает из ini файла раздел [NB], записи (в скобках значения по умолчанию):
TIMEOUT=15000 – таймаут сетевых операций в миллисекундах
Listen=1 – надо ли «слушать» - ждать подключения. Только для nb.dll

3. Рекомендации при использовании медленного канала связи

Если используется низкоскоростной канал связи, то следует настроить следующие параметры: ShortTimeout, LongTimeout и для сервера справочников (REFSERVER – основная секция) и для менеджерской станции (REFEDIT – основная секция).
CollFileCache для менеджерской станции, для хранения справочников в файлах и синхронизации лишь измененных коллекций (REFEDIT – основная секция).