Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Delphi: Сетевое программирование > ClientSocket нет события onRead


Автор: VFaust 26.10.10, 10:21
Что имеется:
1. Контроллер (PLC) c Ethernet его IP=192.168.0.20 (порт для подключения 102);
2. Компьютер (PC) мой IP=192.168.0.12

Что требуется:
1. Подключиться к порту
2. Периодически отсылать посылки байтов

Что делаю:
1. На форму ClientSocket поставил параметры:
Address: 192.168.0.20
ClientType: ctNonBlocking
Port: 102
2. На кнопку отсылаю ClientSocket1.Socket.SendText(#00);
3. Жду событие onRead

Что не получается:
1. Не происходит события onRead...
2. Через несколько посылок Disconnect...

Аргумент:
смотрю пакеты CommView`ом, пакеты видны, как исходящие, так и входящие...

P.S. делал анологичное приложение, всё работает, но там был другой порт и PLC...

Автор: medved_68 26.10.10, 17:46
Цитата VFaust @
Что не получается:
1. Не происходит события onRead...

После активации сокета (Open или Connect) было событие Connected? (Пакеты пока вообще не посылаем)...:D

Автор: VFaust 26.10.10, 17:52
Есть событие onConnect затем onWrite, после отправки 4й посылки появляется событие onDisconnect...

Автор: medved_68 26.10.10, 18:46
Цитата VFaust @
Есть событие onConnect затем onWrite,

Отлично.
Цитата VFaust @
после отправки 4й посылки появляется событие onDisconnect...

Если ВООБЩЕ ничего не посылать - будет дисконнект через определенное время или нет? И это время одинаковое в случае если ты как сейчас посылаешь и когда вообще ничего не посылаешь? :D

Автор: VFaust 26.10.10, 19:04
Если ничего не отсылать, то дисконекта не происходит... (ждал 5 мин)...
Как только я посылаю 4ю посылку у меня дисконнект...
Судя по логам CommView дисконнект происходит с моей стороны (если такое событие имеет инициатора)...

Добавлено
Только что заметил маленький нюанс...
При расшифровке пакета ComView в пакете подсвечивает части [Ethernet II], [IP], [TCP]...
После области TCP я наблюдаю свои данные...!!!!, но в расшифровке эти данные не значатся..., а параметр TCP.Data length = 0...!!!

Добавлено
Покопал еще...,

во всех исходящих пакетах
IP -> Flags -> Don't fragment bit: 1 - Don't fragment

а во входящих пакетах
IP -> Flags -> Don't fragment bit: 0 - May fragment

Автор: medved_68 27.10.10, 04:33
Цитата VFaust @
Как только я посылаю 4ю посылку у меня дисконнект...
Судя по логам CommView дисконнект происходит с моей стороны (если такое событие имеет инициатора)...

Показывай, как посылаешь... :D

Добавлено
Цитата VFaust @
На кнопку отсылаю ClientSocket1.Socket.SendText(#00);

Как вариант - попробуй воспользоваться методом SendBuf... :huh:

Автор: VFaust 27.10.10, 07:53
Проблема не в отправлении, а в приеме...

Фото пакета который я отсылаю
user posted image

Фото пакета, который я не могу получить
user posted image

Красным выделены различия, как мне кажется из-за которых я не вижу пакета...
Зеленым выделены данные...

Автор: medved_68 27.10.10, 11:05
Цитата VFaust @
Проблема не в отправлении, а в приеме...

Ну в таком случае могу посоветовать поднять серверное приложение и этим клиентом попробовать подконнектиться к нему (например, на локалхост). И убедиться, что то, что посылаешь с сервера на клиенте нормально принимается. Если это будет так, а с девайса не сможешь принимать - тогда только изучать, почему так, углубившись в мануалы по девайсу (если он стороннего производителя)... :D А вот если прием и здесь "захромает", тогда уже и "репу морщить" в сторону нормальности компонента и т.д....

Автор: VFaust 28.10.10, 07:33
Я пробовал подключаться к собственному серверному приложению и всё работало, даже порт использовал тот же...

CommView видит данные, и я хочу принимать вот такие "специфические" пакеты...

Добавлено
На другом форуме мне предложили

Цитата:
Ну для отпетых извращенцев есть еще способ - cотворить файрвол и в интересующих пакетах менять PSH c 0 на 1

Автор: STest69 12.11.19, 11:34
VFaust
У вас что то получилось? Интересен результат)

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)