связь по ethernet

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: связь по ethernet

Сообщение alexs » 27.09.2010 23:17:33

Yurakl писал(а):и что же эти файлы сделают???

А откомпилировать и запустить?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: связь по ethernet

Сообщение Yurakl » 29.09.2010 08:52:55

.wOvAN
используется то тсп, я уже писал об этом, но если сокет разрывается, то никакой гарантированной доставки не будет

Добавлено спустя 1 минуту 1 секунду:
alexs писал(а):
Yurakl писал(а):и что же эти файлы сделают???

А откомпилировать и запустить?


я что-то не могу найти данные файлы:(
Yurakl
новенький
 
Сообщения: 62
Зарегистрирован: 20.01.2010 08:59:53

Re: связь по ethernet

Сообщение alexs » 29.09.2010 22:36:07

Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: связь по ethernet

Сообщение SAK » 02.10.2010 12:08:33

Изначально ошибочный подход: проверить наличие связи и затем отправить данные без подтверждения получения, а если связь есть, но переданные данные потерялись? Надо сразу передавать данные и получать подтверждение их получения иначе система получается нестабильной.
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Re: связь по ethernet

Сообщение Yurakl » 04.10.2010 13:06:40

SAK
стабильность обеспечивает тсп протокол.
Однако если сокет вырублен, то программа у меня сама сохраняет не отправленные пакеты, а при возобновлении связи их передает получателю
Yurakl
новенький
 
Сообщения: 62
Зарегистрирован: 20.01.2010 08:59:53

Re: связь по ethernet

Сообщение minoshi » 04.10.2010 17:08:39

Yurakl писал(а):Однако в некоторых моментах она почему-то не срабатывает. И при отсутствии сети данные все равно передаются.



Доброго времени суток, уважаемый Юракл!

Как я понял, основные Ваша проблема - это периодическое нерегулярное пропадание связи между двумя компьютерами.
Основные решения Вам уже подсказали, однако повторюсь (не знаю какой у Вас уровень программирования):

1.Я не знаю как у Вас устроена сеть и как далеко располагаются Ваши компьютеры друг от друга. Но если пропадание связи не регулярное, то первое, что я заподозрил бы - это проблемы самой сети - начиная от банального не плотно вставленного разъема кабеля в гнездо сети (который периодически задевает уборщица при мытье пола) и кончая наличием какого-то общедоступного сервера, на котором валяются тонны музыки, фильмов и игрушек (вон, на прошлом неделе, кто-то у меня на работе выложил на сетевой диск новый фильм, два десятка лоботрясов стали его смотреть, сеть, сами понимаете, просела ниже плинтуса, пока не пришел админ и не навел порядок).

А может в это время у Вас где-то на серваке происходит синхронизация каких-то данных, слив/прием информации большого объема? В этот момент времени пакеты могут банально не дойти.

2.Проверьте наличие и настройки антивирусов. Опять пример, на работе пользуемся самописным мессенгером, работающим на сокетах так вот каспер пропускает его без проблем, а НОД32 зарубил (дополнительно пришлось ему прописывать зоны, и прочую чепуху).

3.Проверьте номер порта, который открывает сокет (я по первости по-дурости прописывал порты 32, 123 и т.п. и потом жутко удивлялся почему у меня ничего не работает :) ). Может его где-то как-то рубит антивирь.

3.Проблемы в коде программы: первое - сдерните последнюю версию лазаря и перекомпилируйте программу.

4.Не поможет, впишите в прогу (если она сама не рапортует об ошибках(exceptions), где только можно вывод сообщений текущего состояния на консоль и анализируйте вывод.
Опять таки, как Вам уже советовали, проверяйте первоначальную доступность компа тем же пингом.
Нет пинга, не смысла слать пакеты. Есть пинг, но нужный порт закрыт - нет смысла слать пакет.
Ошибка думается найдется.

5.Ничего не получилось, ну выложите код сюда, а также описание операционных систем на этих компьютерах, вместе покумекаем, авось миром поборем заразу.

На первое время я бы поступил так.
Аватара пользователя
minoshi
постоялец
 
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38

Re: связь по ethernet

Сообщение Yurakl » 05.10.2010 12:39:26

minoshi
видимо вы не до конца поняли суть проблемы. объясню еще раз и постараюсь подробнее.
Имеется компьютер на котором работает специализированное ПО, это ПО подключается по сети к другому компьютеру на котором запущена программа,написанная на лазарусе в линуксе. Эта программа должна определять наличие связи с ПО(может сеть отрублена, а может и само ПО вырублено, НЕ ВАЖНО!), и пинги здесь не помогут. Если этой связи по тсп нет, то просто она данные сохраняет у себя, чтобы при ее появлении выдать их в сеть.
Вообще вся сеть работает нормально. здесь видимо проблема в самой проге. а как проверять наличие связи я уже писал, при помощи команды send, либо в чем-то другом. В чем понять не могу.
данные которые отправляет программа считываются из ком порта устройства. И вот если подключено одно устройство, то все работает отлично, а вот если подключают другое похожее и сеть пропадает, то прога этого не видит...
Yurakl
новенький
 
Сообщения: 62
Зарегистрирован: 20.01.2010 08:59:53

Re: связь по ethernet

Сообщение SAK » 06.10.2010 14:04:00

А чем отправляются данные? Тем же send? Тогда зачем дополнительно проверять отправкой пустого пакета? А если пустой пакет дошёл, а следующий за ним пакет с данными потерялся? Почему не сразу слать пакет с данными и проверять результат доставки, если не дошёл значит сохраняем данные до следующего раза. Может проблема только с пустыми пакетами?
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Re: связь по ethernet

Сообщение Yurakl » 06.10.2010 14:30:23

пустой пакет проверяет наличие связи для того, что сразу данные невозможно отправить, их необходимо обработать перед отправкой. а если пустой пакет не доходит, т.е. связи нет, то он просто записывается в память, а обрабатывается позже
пробовал отправлять не пустые пакеты, все тоже самое. да и разницы никакой нет...
Yurakl
новенький
 
Сообщения: 62
Зарегистрирован: 20.01.2010 08:59:53

Re: связь по ethernet

Сообщение .wOvAN » 06.10.2010 14:51:14

Yurakl Я так понял вам нужно подобие SMTP сервера? Так скопируйте логику SMTP ставьте все приходящие данные в очередь (т.е. сохраняте в файлы н-р) затем сервер с определенным интервалом будет эти данные пытаться передать адресату и если успешно то удалять из очереди :|
.wOvAN
постоялец
 
Сообщения: 118
Зарегистрирован: 16.04.2010 06:36:12

Re: связь по ethernet

Сообщение Yurakl » 06.10.2010 15:16:30

нет, не SMTP, вообще делаю что-то типа буфера. который исключает потерю данных в случае отсутствия связи с компом. Т.е. если нет связи с ПО, то данные записываются в буфер,а если она есть то они сначала выдаются.а потом напрямую передаются с небольшой обработкой.
Все реализовано и работает в целом. но в некоторых моментах при отсутствии связи программа не видит этого
Yurakl
новенький
 
Сообщения: 62
Зарегистрирован: 20.01.2010 08:59:53

Re: связь по ethernet

Сообщение and » 23.10.2010 02:29:15

Yurakl писал(а):пустой пакет проверяет наличие связи для того, что сразу данные невозможно отправить, их необходимо обработать перед отправкой. а если пустой пакет не доходит, т.е. связи нет, то он просто записывается в память, а обрабатывается позже
Ну как, за истекшие две недели поняли, что Вам две страницы пытаются объяснить?
"если пустой пакет не доходит" - связи нет на момент отправки тестового пакета. Но не гарантирует, что связь не появится в следующий момент.
Если пустой пакет отправился - связь есть на момент отправки тестового пакета. Но не гарантирует, что связь не прервётся в следующий момент.
Вам ведь SAK описАл самый правильный и очевидный подход: посылайте сразу пакет с данными. Если "связи нет" - он не дойдёт, и Send не вернёт размер Ваших данных, и тогда сохраняйте на диск.
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Re: связь по ethernet

Сообщение Vadim » 23.10.2010 07:13:15

Yurakl
Сделайте функцию ответа на принятый пакет. Каждый пакет данных имеет определённый объём. В ответе второй комп посылает цифру принятых байт. Если совпадает, значит пакет прошёл, если нет - инициируется повторная отправка.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: связь по ethernet

Сообщение Yurakl » 26.10.2010 14:11:06

and писал(а):
Yurakl писал(а):пустой пакет проверяет наличие связи для того, что сразу данные невозможно отправить, их необходимо обработать перед отправкой. а если пустой пакет не доходит, т.е. связи нет, то он просто записывается в память, а обрабатывается позже
Ну как, за истекшие две недели поняли, что Вам две страницы пытаются объяснить?
"если пустой пакет не доходит" - связи нет на момент отправки тестового пакета. Но не гарантирует, что связь не появится в следующий момент.
Если пустой пакет отправился - связь есть на момент отправки тестового пакета. Но не гарантирует, что связь не прервётся в следующий момент.
Вам ведь SAK описАл самый правильный и очевидный подход: посылайте сразу пакет с данными. Если "связи нет" - он не дойдёт, и Send не вернёт размер Ваших данных, и тогда сохраняйте на диск.


Если посылать сразу пакет с данными, то тогда возникнет такая ситуация, что пока не было связи и данные сохранялись в памяти,а когда она появилась, то им сначала пришел пакет,который обрабатывается в настоящее время,а только потом пакеты из памяти.
тем более все пакеты программой еще обрабатываются в зависимости от того передаются они сразу или записываются в память
Yurakl
новенький
 
Сообщения: 62
Зарегистрирован: 20.01.2010 08:59:53

Re: связь по ethernet

Сообщение and » 26.10.2010 20:23:56

Yurakl писал(а):Если посылать сразу пакет с данными, то тогда возникнет такая ситуация, что пока не было связи и данные сохранялись в памяти,а когда она появилась, то им сначала пришел пакет,который обрабатывается в настоящее время,а только потом пакеты из памяти.
Т.е. нарушается очередь, я правильно Вас понял? Так отправляйте всегда самый старый пакет!
Аватара пользователя
and
постоялец
 
Сообщения: 124
Зарегистрирован: 16.09.2009 17:11:01
Откуда: г. Гомель, Беларусь

Пред.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

Рейтинг@Mail.ru