Конференция "Сети" » Органицая обмена большого коичества такста [D7, WinXP]
 
  • Costy (11.11.07 14:14) [0]
    подскажите пожалуйста как можно организовать быстрый обмен большого количества текстовых команд посредствам tClient(server)Socket        когда я делаю класический приём  то происходит  ошибка
  • DVM © (11.11.07 14:34) [1]

    > когда я делаю класический приём

    это какой?
  • Costy (11.11.07 14:43) [2]
    это

    ClientSocket1.Socket.Connected[0].sendText('команда');

    а на другом конце провода по событию Server1ClientRead записываем ReceiveText в несчастную стринг переменую и далие проводим анализ команды
  • Costy (11.11.07 14:46) [3]
    ошибся в примери малек   представте что Connected[0]  это такая шутка
  • DVM © (11.11.07 15:04) [4]
    Ничего не понял. Где ошибка то возникаеточешь сделать конкретно?
  • Costy (11.11.07 15:17) [5]
    калочи у мя две проги клиент и сервер :

    сервер:
    procedure TForm1.Server1ClientRead(Sender: TObject; Socket:СustomWinSocket);
     var
     s:string;
     begin
     s:=server1.Socket.Connections[0].ReceiveText;

     if copy(s,1,3)='ris' then
     begin
     delete(s,1,3);
     scr.Pixels[strtoint(copy(s,pos('+',s)+1,length(s))),strtoint(copy(s,1,pos('+',s)-1))]:=clRed;
     end;

    end;

    одним словам сервер получает кардинаты и  рисует точку  на экране
    а клиент отправляет ему эти кардинаты (в следствии их полученя путем анализа бмп картинки) но кардинат до усрачке много и судя по всему он начинает из склеивать в 1 в итоге сервер выдаёт ошибку
  • Costy (11.11.07 15:20) [6]
    мне кажется мне просто надо науччить после прочтения команды удалить её из переменной и научить его видеть конец команды тоесть  удобнее просто заместо  ris задать  каконебудь символ который будет  являтся началом
  • DVM © (11.11.07 15:26) [7]

    > в итоге сервер выдаёт ошибку

    Так прямо и говорит, мол Ошибка ? Что там за ошибка то?
  • Costy (11.11.07 15:45) [8]
    куча куча  команд от клиента а потом is not valid integer value

    карочи он склеивает команды а потом не может ралечить в них кардинаты и в функцию преобразования попадает не коректные данные      ыыыы

    вопрос  в том как сделать чтобы не происзодила путаницы делать ещё одну переменую и в эту переменую выдергивать по команде (выдергивать по характерным признакам конца начала)   а потом анализировать имено эту доп переменую
  • DVM © (11.11.07 15:51) [9]

    > Costy   (11.11.07 15:45) [8]

    Я использую нечто подобное в своих программах, т.е. текстовый протокол для обмена командами между клиентом и сервером. В моем варианте все приходящие команды собираются в одну большу строку и потом из этой строки команды выделяются по меткам специальным и обрабатываются.

    Команды у меня выглядят так:

    Action: Тип команды#13#10
    Param1: Value1#13#10
    Param2: Value1#13#10
    ...
    ParamN: ValueN#13#10
    ActionID: ID#13#10
    #13#10

    Два #13#10#13#10 означают конец команды.
  • zvukoff (11.11.07 16:01) [10]

    > Costy   (11.11.07 15:17) [5]
    > одним словам сервер получает кардинаты и  рисует точку  
    > на экране
    > а клиент отправляет ему эти кардинаты (в следствии их полученя
    > путем анализа бмп картинки) но кардинат до усрачке много
    > и судя по всему он начинает из склеивать в 1 в итоге сервер
    > выдаёт ошибку

    правильно и ничего у тебя не получится
    для сохранения формата нужно еще отправлять и цвет точки)
    иначе на сервере GIF получится, а не BMP
 
Конференция "Сети" » Органицая обмена большого коичества такста [D7, WinXP]
Есть новые Нет новых   [134431   +10][b:0][p:0]