-
Всем привет
Есть Клиент серверное приложение. При событии OnformMouseMove ClientSocket шлёт серверу строку с координатами мыши 1024,23. Сервер при событии OnClientRead разбивает строку на x=1024 y=23 и вызывает процедуру SetCursorPos(x,y)
Все вродебы работает, но работает не так как бы хотелось. Если быстро перемещать мышь на форме то получается так что склеиваются пакеты и мы имеем строку не 1024,23 а 1024,231024,231024,231024,231024,23 1024,231024,231024,231024,231024,23 1024,231024,231024,231024,231024,23 что-то типа этого. Из того что пришло мне в голову решил делить эти пакеты если они склеены. Т.е в конце отправляемой строки добавлял | получал 1024,23|1024,23|1024,23|1024,23|1024,23|1024,23| 1024,23|1024,23|1024,23|1024,23| дальше на стороне сервера парсил полученый результат и всё работает но блин обять не так как надо... Теперь при перемещении мыши она на другом десктоме перемещается медлено...т.е рывками.. Посдкажите у кого какие идеи может кто-то сталкивался с такой проблемой.... Спасибо дорогие господа!
-
The WM_SETCURSOR message is sent to a window if the mouse causes the cursor to move within a window and mouse input is not captured.
-
MousePacket=Packed Record X:Word; Y:Word; End;
и не надо парсить :)
-
антон1243232 (25.03.09 12:14) склеиваются пакеты природа такая у сокетов
антон1243232 (25.03.09 12:14) перемещается медлено...т.е рывками.. медленно парсиЩъ... протокол мля... если пришло несколько координат - пользуй только последнюю
-
Тогда дискретность повысится, а он синусоиду хочет :)
-
или [3] или отсылай только последнюю координату + [2] учти
-
> FireMan_Alexey © (25.03.09 12:44) [2]
> и не надо парсить
"Надо, Федя, надо .." (С)
Он же в OnRead все без разбору выгребает из вх.очереди)
-
типа Radmina самопального пишешь?
-
зато парность теперь парсить не надо)
-
Как я написал в [2] пересылать координаты строками, большая расточительность!
К примеру, по твоему алгоритму, координаты (1023,767) будут выглядеть так:
|1023,767| =>9 байт не постоянной длины а в моем случае пакет имеет постоянную длину 4 байта и парсить особенно не надо. Надо только контролировать на кратность 4-рем пришедших данных :) тем более что WORD имеет диапазон 0..65535 т.е. полная совместимость получиться и HD разрешениями :). И еще ты не сказал, как ты снимаешь координаты с клиентской стороны?! Если ты просто на таймер впиндюрил GetCursorPos, то соответсвенно оно так и будет работать как ты описал...
|