Конференция "Сети" » Проблема со склейкой пакетов [D7, NT4, Win2k, WinXP]
 
  • антон1243232 (25.03.09 12:14) [0]
    Всем привет

    Есть Клиент серверное приложение.
    При событии 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|
    дальше на стороне сервера парсил полученый результат и всё работает но блин обять не так как надо...
    Теперь при перемещении мыши она на другом десктоме перемещается медлено...т.е рывками..
    Посдкажите у кого какие идеи может кто-то сталкивался с такой проблемой....
    Спасибо дорогие господа!
  • Сергей М. © (25.03.09 12:26) [1]
    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.
  • FireMan_Alexey © (25.03.09 12:44) [2]
    MousePacket=Packed Record
     X:Word;
     Y:Word;
    End;

    и не надо парсить :)
  • Slym © (25.03.09 13:12) [3]
    антон1243232   (25.03.09 12:14)
    склеиваются пакеты

    природа такая у сокетов

    антон1243232   (25.03.09 12:14)
    перемещается медлено...т.е рывками..

    медленно парсиЩъ...
    протокол мля...
    если пришло несколько координат - пользуй только последнюю
  • FireMan_Alexey © (25.03.09 13:13) [4]
    Тогда дискретность повысится, а он синусоиду хочет :)
  • brother © (25.03.09 13:15) [5]
    или [3] или отсылай только последнюю координату + [2] учти
  • Сергей М. © (25.03.09 13:17) [6]

    > FireMan_Alexey ©   (25.03.09 12:44) [2]


    > и не надо парсить


    "Надо, Федя, надо .." (С)

    Он же в OnRead все без разбору выгребает из вх.очереди)
  • Slym © (25.03.09 13:19) [7]
    типа Radmina самопального пишешь?
  • brother © (25.03.09 13:19) [8]
    зато парность теперь парсить не надо)
  • FireMan_Alexey © (25.03.09 13:24) [9]
    Как я написал в [2] пересылать координаты строками, большая расточительность!

    К примеру, по твоему алгоритму, координаты (1023,767) будут выглядеть так:

    |1023,767| =>9 байт не постоянной длины
    а в моем случае пакет имеет постоянную длину 4 байта и парсить особенно не надо. Надо только контролировать на кратность 4-рем пришедших данных :)
    тем более что WORD имеет диапазон 0..65535 т.е. полная совместимость получиться и HD разрешениями :).
    И еще ты не сказал, как ты снимаешь координаты с клиентской стороны?!
    Если ты просто на таймер впиндюрил GetCursorPos, то соответсвенно оно так и будет работать как ты описал...
 
Конференция "Сети" » Проблема со склейкой пакетов [D7, NT4, Win2k, WinXP]
Есть новые Нет новых   [134435   +33][b:0][p:0]