![]() |
|
Winsock закрывает соединение. | ☑ | ||
---|---|---|---|---|
0
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. вышел из ситуации переподключением. Но хотелось бы понять сего зверька, почему так? |
|||
1
drumandbass
22.05.18
✎
12:01
|
(0) Для приёма нужна ВК которая будет генерить внешнее событие. Для отправки ВК не нужна.
|
|||
2
SuperMario
22.05.18
✎
12:11
|
(1) у меня только отправка.
Это сетевое двухканальное реле SR-201. Управление для СКУД. Работает, но падает соединение с ней. Я так понимаю, что это win7 делает для подвисших сокетов сама? |
|||
3
eklmn
гуру
22.05.18
✎
12:16
|
(2) потому что слушать привилегия сервера.
У тебя клиент, его дело отправить и закрыться. |
|||
4
SuperMario
22.05.18
✎
12:32
|
(3) понимаю.
|
|||
5
Вафель
22.05.18
✎
12:34
|
тебе нужен режим keep-alive
|
|||
6
SuperMario
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 секунда) |
|||
7
SuperMario
22.05.18
✎
12:58
|
Думаю, что reconnect будет правильным, дабы не ломать реестр.
Спс всем за помощь! |
|||
8
Дык ё
22.05.18
✎
13:01
|
||||
9
MM
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) выход правильный. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |