Просмотр полной версии : Стабильность TCP соединения.
Добрый день,
пишу TCP сервер на ПЛК, на данный момент уже есть связь с клиентом на ПК. но когда я подключаюсь через некоторое время (всегда разное) ПЛК разрывает связь.
Вопрос так должно быть? или я с программой накосячил.
P.S проверял на ПЛК110 и ПЛК150, в качестве клиента использовал telnet.
Добрый день,
пишу TCP сервер на ПЛК, на данный момент уже есть связь с клиентом на ПК. но когда я подключаюсь через некоторое время (всегда разное) ПЛК разрывает связь.
Вопрос так должно быть? или я с программой накосячил.
P.S проверял на ПЛК110 и ПЛК150, в качестве клиента использовал telnet.
Плк разрывает сразу связь?
"но когда я подключаюсь через некоторое время (всегда разное) ПЛК разрывает связь."
нельзя помиловать казнить
Плк разрывает сразу связь?
нет не сразу, время соединения составляет от 10 секунд до одной минуты.
через через некоторое время (всегда разное)
нет не сразу, время соединения составляет от 10 секунд до одной минуты.
не совсем понятно, чего Вы ожидаете. Если установлено соединение и Вы ведете некоторый обмен, то через некоторой паузы послав данные обнаруживается что соединения нет. Или Вы пытаетесь снова подключиться и соединение не происходит. В любом случае без кода который организует Ваш сервер проблему не решить
нет не сразу, время соединения составляет от 10 секунд до одной минуты.
Так должно быть, если это таймаут и на любом ПК будет работать так же (примерно).
есть такая штука как keepAlive, почитайте, суть - поддерживать соединения, во время простоя.
Как я понял есть два варианта. Первый соединиться, передать данные, получить ответ, разорвать соединение, или же подключится, получать и передавать данные , а между простоями отправлять пустые пакеты для поддержания связи?
P.S думаю первый вариант больше подходит.
Как я понял есть два варианта. Первый соединиться, передать данные, получить ответ, разорвать соединение, или же подключится, получать и передавать данные , а между простоями отправлять пустые пакеты для поддержания связи?
P.S думаю первый вариант больше подходит.
Какой вариант, как и чем надо думать в каждой задаче.
У меня есть устройства 24\7 в сети, поэтому у них соединение поддерживается, не обязательно пустые пакеты, я передаю промежуточную информацию, не критичную.
Есть машины которые работают по сменам, там тоже если включена, то устанавливается онлайн и при разрыве восстанавливается и поддерживается.
А соединиться\передать\отключиться я не понимаю где это нужно такое одноразовое, каждому своё, тут вообще udp советуют как наиболее легкий путь.
Во всяком случае примите факт, что таймаут был, есть и будет.
А соединиться\передать\отключиться я не понимаю где это нужно такое одноразовое, каждому своё, тут вообще udp советуют как наиболее легкий путь.
в отношении овеновских плк для сервера очень даже пригодится, когда по сети могут подключаться несколько клиентов, чтоб взять разово какую либо информацию. Если кто то "присосется" на постоянно, то остальные не получат соединение с сервером
в отношении овеновских плк для сервера очень даже пригодится, когда по сети могут подключаться несколько клиентов, чтоб взять разово какую либо информацию. Если кто то "присосется" на постоянно, то остальные не получат соединение с сервером
А у овеновских плк что не так? я не могу сделать так:
HD_Soc:=SysSockCreate(SOCKET_AF_INET,SOCKET_STREAM ,SOCKET_IPPROTO_TCP);
tcp_adr.sin_family:=SOCKET_AF_INET;
tcp_adr.sin_port:=port;
tcp_adr.sin_addr:=SOCKET_INADDR_ANY;
SysSockBind(HD_Soc,ADR(tcp_adr),SIZEOF(tcp_adr));
SysSockListen(HD_Soc,5);
для пяти клиентов?
Один клиент на порт. Ограничение ПЛК. Кто-то из сотрудников тут на форуме говорил уже.
в отношении овеновских плк для сервера очень даже пригодится, когда по сети могут подключаться несколько клиентов, чтоб взять разово какую либо информацию. Если кто то "присосется" на постоянно, то остальные не получат соединение с сервером
мне надо было уточнить. у меня плк всегда клиент на библиотеках.
Иногда и сервер и клиент для разных задач.
Филоненко Владислав
15.03.2016, 18:11
старый да, 1 клиент на сокет, а не на порт. 2 сокета - 2 клиента и т.д.
На М02 уже более "классическая" реализация listen/accept - но и там десятки, но не тысячи соединений.
А как можно получить айришник того кто ко мне на ПЛК подключился?
А как можно получить айришник того кто ко мне на ПЛК подключился?
по форуму поищите, выкладывался пример где искать адрес клиента
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot