Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Winsock закрывает соединение.

Winsock закрывает соединение.
Я
   SuperMario
 
22.05.18 - 11:49
Всем привет! Друзья, нужна помощь по Winsock


    ВинSock= Новый COMОбъект("MSWinsock.Winsock");
    ВинSock.Connect("172.16.0.193","6722");
    Сообщить(ВинSock.State);

возвращает состояние =7 ( sckConnected=7,Подключен);

далее отправляю данные 

Если  ВинSock.State = 7  Тогда 
    ВинSock.SendData ("12");
КонецЕсли;

все работает.

Но спустя минуту бездействия падет в состояние =8 

sckClosing=8,Peer is closing the connection(Клиент закрыл подключение).
По коду никаких команд о закрытии я не отправляю.

Как заставить сокет не закрывать соединение?


p.s. вышел из ситуации переподключением. Но хотелось бы понять сего зверька, почему так?
 
 
   drumandbass
 
1 - 22.05.18 - 12:01
(0) Для приёма нужна ВК которая будет генерить внешнее событие. Для отправки ВК не нужна.
   SuperMario
 
2 - 22.05.18 - 12:11
(1) у меня только отправка.
Это сетевое двухканальное реле SR-201.
Управление для СКУД.
Работает, но падает соединение с ней. Я так понимаю, что это win7 делает для подвисших сокетов сама?
   eklmn
 
3 - 22.05.18 - 12:16
(2) потому что слушать привилегия сервера.
У тебя клиент, его дело отправить и закрыться.
   SuperMario
 
4 - 22.05.18 - 12:32
(3) понимаю.
   Вафель
 
5 - 22.05.18 - 12:34
тебе нужен режим keep-alive
   SuperMario
 
6 - 22.05.18 - 12:43
(5) что-то вроде этого?

Установка параметров tcp_keepalive на сервере Windows

Вы должны обладать правами Администратора к серверу. В разделе реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
создайте параметр DWORD с именем KeepAliveTime и значением 300000 (десятичным). Параметр задаётся в миллисекундах, поэтому предлагаемое значение — это 5 минут. После чего остановите Caché и перезагрузите сервер.

Что касается двух других параметров tcp_keepalive, то их умолчания в Windows таковы:

KeepAliveInterval
Key: Tcpip\Parameters
Value Type: REG_DWORD—time in milliseconds
Valid Range: 0–0xFFFFFFFE
Default: 1000 (1 секунда)
   SuperMario
 
7 - 22.05.18 - 12:58
Думаю, что reconnect будет правильным, дабы не ломать реестр.
Спс всем за помощь!
   Дык ё
 
8 - 22.05.18 - 13:01
   MM
 
9 - 22.05.18 - 13:02
(6) Этот параметр похоже означает совсем другое https://docs.microsoft.com/ru-ru/previous-versions/windows/it-pro/windows-2000-server/cc957548(v=technet.10) . Он и так раз в секунду поддерживает соединение пустым пакетом.
Похоже сервер к которому подключаешься сам рвёт соединение по своим причинам, так что в (7) выход правильный.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует