| Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум на Исходниках.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 |
| После активации сокета (Open или Connect) было событие Connected? (Пакеты пока вообще не посылаем)... |
| Автор: VFaust 26.10.10, 17:52 |
| Есть событие onConnect затем onWrite, после отправки 4й посылки появляется событие onDisconnect... |
| Автор: medved_68 26.10.10, 18:46 |
| Отлично. Если ВООБЩЕ ничего не посылать - будет дисконнект через определенное время или нет? И это время одинаковое в случае если ты как сейчас посылаешь и когда вообще ничего не посылаешь? |
| Автор: 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 дисконнект происходит с моей стороны (если такое событие имеет инициатора)... Показывай, как посылаешь... Добавлено Как вариант - попробуй воспользоваться методом SendBuf... |
| Автор: VFaust 27.10.10, 07:53 |
| Проблема не в отправлении, а в приеме... Фото пакета который я отсылаю ![]() Фото пакета, который я не могу получить ![]() Красным выделены различия, как мне кажется из-за которых я не вижу пакета... Зеленым выделены данные... |
| Автор: medved_68 27.10.10, 11:05 |
| Ну в таком случае могу посоветовать поднять серверное приложение и этим клиентом попробовать подконнектиться к нему (например, на локалхост). И убедиться, что то, что посылаешь с сервера на клиенте нормально принимается. Если это будет так, а с девайса не сможешь принимать - тогда только изучать, почему так, углубившись в мануалы по девайсу (если он стороннего производителя)... А вот если прием и здесь "захромает", тогда уже и "репу морщить" в сторону нормальности компонента и т.д.... |
| Автор: VFaust 28.10.10, 07:33 |
| Я пробовал подключаться к собственному серверному приложению и всё работало, даже порт использовал тот же... CommView видит данные, и я хочу принимать вот такие "специфические" пакеты... Добавлено На другом форуме мне предложили Цитата: Ну для отпетых извращенцев есть еще способ - cотворить файрвол и в интересующих пакетах менять PSH c 0 на 1 |
| Автор: STest69 12.11.19, 11:34 |
| VFaust У вас что то получилось? Интересен результат) |