Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Органицая обмена большого коичества такста [D7, WinXP]


Costy ©   (2007-11-11 14:14:00) 

подскажите пожалуйста как можно организовать быстрый обмен большого количества текстовых команд посредствам tClient(server)Socket        когда я делаю класический приём  то происходит  ошибка


zvukoff   (2007-11-11 16:01:00) [1]


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

правильно и ничего у тебя не получится
для сохранения формата нужно еще отправлять и цвет точки)
иначе на сервере GIF получится, а не BMP


DVM   (2007-11-11 15:51:00) [2]


> 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 означают конец команды.


Costy   (2007-11-11 15:45:00) [3]

куча куча  команд от клиента а потом is not valid integer value

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

вопрос  в том как сделать чтобы не происзодила путаницы делать ещё одну переменую и в эту переменую выдергивать по команде (выдергивать по характерным признакам конца начала)   а потом анализировать имено эту доп переменую


DVM   (2007-11-11 15:26:00) [4]


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

Так прямо и говорит, мол Ошибка ? Что там за ошибка то?


Costy   (2007-11-11 15:20:00) [5]

мне кажется мне просто надо науччить после прочтения команды удалить её из переменной и научить его видеть конец команды тоесть  удобнее просто заместо  ris задать  каконебудь символ который будет  являтся началом


Costy   (2007-11-11 15:17:00) [6]

калочи у мя две проги клиент и сервер :

сервер:
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 в итоге сервер выдаёт ошибку


DVM   (2007-11-11 15:04:00) [7]

Ничего не понял. Где ошибка то возникаеточешь сделать конкретно?


Costy   (2007-11-11 14:46:00) [8]

ошибся в примери малек   представте что Connected[0]  это такая шутка


Costy   (2007-11-11 14:43:00) [9]

это

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

а на другом конце провода по событию Server1ClientRead записываем ReceiveText в несчастную стринг переменую и далие проводим анализ команды


DVM   (2007-11-11 14:34:00) [10]


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

это какой?


Наверх

Титульная страница Поиск, карта сайта Написать письмо