![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с постом сообщений по TTcpSocket в D7 [D7, Win2k, WinXP]
empty © (2004-05-24 16:05:00)Пояснение к проблемме:
Создано тестовое приложение для передачи данных по сети для проверки передачи данных. Со свойством в TTcpServer и TTcpClient (BlockMode=bmNonBlocking) "асинхронная передача данных". При передачи данных возникают события которые свойственны для данных компонентов в часности у серверного компонента OnAccept, в нём необходимо выполнить операцию чтения из клиента информации. Т.е. кодом вышлядит примерно так :
procedure Form1.TcpServerAccept( Sender : TObject, ClentSocket : TTcpClient);
Var Mes : String;
begin
While MSG<>'' do
begin
Mes:=ClientSocket.ReadLn;
end;
end;
При этом в переменную постоянно присваивается значения которые в такой же последовательности были присланы от слиента к серверу. Так вот это событие возникает без проблем, но, !когда форма активна! в переменную не присваивается значение текста посланого от клиента и при изменения активности формы, сразу начинают приходить все сообщения которые были посланы. Тоесть при разнице свойства Active на форме с компонентом (а точнее приложении) чувствуется разница в доставке сообщения. Тоесть событие происходит а буфер сообщений постоянно пустой, и только при незначительных изменениях он начинает заполнятся, при каких мне сложно отследить и в принципе не представляется возможным... Прошу подсказать в чём может быть причина при изменении этого свойства.
С уважением Денис. (empty)
nomshar (2004-05-26 15:48:00) [1]Слушай, ты во-первых, зачем в обработчике OnAccept заводишь цикл? У тебя же вся программа нафиг встанет.
А во-вторых. Дай код. Хотя там ничего сложного и можно в принципе обойтись и дельфишными компонентами.
tesseract (2004-05-25 09:23:00) [2]Используй idTcpServer, стандартные дельфёвые компоненты глючат сильно. Заманаешься. Там вообще сложно понять что и когда ты получаешь.