Gunnman писал(а):
Типа такого?И да, предлагаю голосовать за такое изменение компонента Events - /topic/57987/4
Gunnman писал(а):
а Events можно использовать с паралельным потоком?Редактировалось 4 раз(а), последний 2017-04-24 10:57:21
Ответов: 4630
Рейтинг: 749
|
|||
Gunnman писал(а): Типа такого?И да, предлагаю голосовать за такое изменение компонента Events - /topic/57987/4 Gunnman писал(а): а Events можно использовать с паралельным потоком?Редактировалось 4 раз(а), последний 2017-04-24 10:57:21 |
|||
карма: 26 |
|
Ответов: 817
Рейтинг: 52
|
|||
Добрый день!
Вот эта схемка должна работать (по логике), но не работает. Схема
err.png Редактировалось 1 раз(а), последний 2017-05-23 21:00:40 |
|||
карма: 1 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Разнеси сервер и клиент в разные приложения. Либо используй AsyncEvents=True, и doSendAsync. Потому что пока ты отправляешь данные (синхронно в главном потоке), главный поток ожидает пока они не будут отправлены. В это время принять данные можно только при AsyncEvents=True, но вывести их в визуальные компоненты невозможно, потому что главный поток занят. Где-то там ошибка появляется.
Кроме того, событие onReceive выдаёт данные не за один раз, а порциями примерно до 8КБ. Тебе в событии onReceive нужно дождаться прихода всех данных. Сделать это можно, если перед данными отправлять их длину, а при приёме считывать длину и накапливать данные до получения этого количества. Пример можно глянуть тут: /topic/65137. Редактировалось 1 раз(а), последний 2017-05-24 12:55:02 |
|||
карма: 26 |
| ||
Голосовали: | -= DriveR =- |
Ответов: 817
Рейтинг: 52
|
|||
Netspirit, Спасибо. Буду пробовать, но чувствую, что вопросов будет много.
|
|||
карма: 1 |
|
Ответов: 817
Рейтинг: 52
|
|||
карма: 1 |
|
Ответов: 817
Рейтинг: 52
|
|||
Netspirit, добрый день!
Подскажите, где можно взять подробную информацию по кодам ошибок? |
|||
карма: 1 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Коды ошибок можно посмотреть здесь: http://msdn.microsoft.com/en-us/library/ms681381.aspx
|
|||
карма: 26 |
|
Ответов: 655
Рейтинг: 18
|
|||
Netspirit, Windows Server 2008r2 ...подключаюсь к серверу, согласно логике программы если клиент не шлет ни чего в течении 5 сек происходит отключение клиента. Netstat показывает что сокет WAIT_CLOSE через минуту исчезает. Если клиент отключается сам то WAIT_CLOSE сокетов нет. Так и должно быть?
Редактировалось 1 раз(а), последний 2017-08-31 10:21:22 |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Не совсем понятно: в первом случае "через минуту исчезает" и во втором "сокетов нет".
Отключая клиента, мы принудительно закрываем сокет соединения на стороне сервера. Предполагаю, после этого система может ждать какой-то реакции от клиента (по-моему, там клиенту посылается TCP-пакет FIN и выдерживается какой-то таймаут). Когда соединение закрывает клиент - это и есть последняя команда, которой от него можно ожидать, поэтому ресурсы соединения освобождаются сразу. Если программа работает как и требуется, тогда это просто такое внутреннее поведение системы. Редактировалось 1 раз(а), последний 2017-08-31 10:32:12 |
|||
карма: 26 |
|
Ответов: 655
Рейтинг: 18
|
|||
Если соединение закрывается сервером то 1 минуту в netstat на сервере отображаются сокеты WAIT_CLOSE, если соединение закрывается клиентом то на сервере в netstat нет сокетов WAIT_CLOSE.
Netspirit писал(а): Если программа работает как и требуется, тогда это просто такое внутреннее поведение системы.Да, работает на Ваших компонентах отлично, просто любопытно почему сервер отключая клиента еще ждет от него что-то.. Редактировалось 1 раз(а), последний 2017-08-31 10:41:27 |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Похоже, причина в
Netspirit писал(а): по-моему, там клиенту посылается TCP-пакет FINРедактировалось 2 раз(а), последний 2017-08-31 17:17:09 |
|||
карма: 26 |
|
Ответов: 655
Рейтинг: 18
|
|||
Да на клиенте так же появляются на минуту сокеты WAIT_CLOSE
|
|||
карма: 0 |
|
Ответов: 168
Рейтинг: 7
|
|||
Netspirit-хороший компонент.
мне кажется клиент при отсутствии соединения зря ресурсы потребляет. Нужно в схеме sleep выбросить вообще, а задержку построить на mmtimer mmtimer.jpg |
|||
карма: 1 |
|
Ответов: 4630
Рейтинг: 749
|
|||
А, так это проблема реализации Sleep. Никто не хочет переделать.
|
|||
карма: 26 |
|
Ответов: 168
Рейтинг: 7
|
|||
да, это надо на системном уровне робить
а вообще этот страхолюдный sleep вообще из пакета надобно выкинуть попробую заняться |
|||
карма: 1 |
|