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

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

Посоветуйте, пожалуйста, методику передачи данных... [D6, WinXP]


Makhanev A.S. ©   (2003-12-01 19:06:00) 

Есть тривиальная задача передачи данных между Клиентами - с одной стороны и Сервером - с другой.
Сервер должен уметь одновременно обработать ВСЕ запросы Клиентов.
Вопрос: что будет с обработчиком ServerSocket.ClientRead, если на сервер посылаются данные от 2-х и более клиентов? Всегда ли сгенерируется OnClientRead - или он иногда будет прерываться (если во время обработки придёт очередной пакет)?

Как можно урегулировать следующую ситуацию:

в клиенте:
SendText("123");
SendText("456");

у сервера:
ReceiveText = "123456" - а хочется "123" и "456".

Дело в том, что после прочтения справки (и интернет статей) на тему ClientType, ServerType, TWinSocketStream и TServerClientThread в голове одна каша:(


Makhanev A.S.   (2003-12-03 23:38:00) [1]


> Polevi © (03.12.03 13:43) [13]

Ок, всем спасибо.
Пока что тесты проходят успешно.


Polevi   (2003-12-03 13:43:00) [2]

>Makhanev A.S. © (02.12.03 22:07) [12]
нет, купи себе >Polevi © (02.12.03 10:35) [8]


Makhanev A.S.   (2003-12-02 22:07:00) [3]


> Polevi © (02.12.03 10:31) [7]
> http://inex.kiev.ua/a.cgi?gid=31&t=_blank&id=38668428&type=iframe


Линк не грузится, там точно "Эффективное программирование TCP\IP" есть?


panov   (2003-12-02 12:06:00) [4]

>Polevi © (02.12.03 11:32) [10]

В частном случае подойдет, может быть, такой вариант.
В общем, конечно, нет...

Но решение автору топика готовое есть - XML-)


Polevi   (2003-12-02 11:32:00) [5]

>panov © (02.12.03 11:13) [9]
существует огромное кол-во парсеров, например MSXML


panov   (2003-12-02 11:13:00) [6]

для таких целей не глупые люди придумали XML

Наверное... не занимался XML.
А что, XML не надо реализовывать?


Polevi   (2003-12-02 10:35:00) [7]

>Makhanev A.S. © (02.12.03 00:10) [6]
Э. Джонс Д. Оланд
Программирование в сетях Microsoft Windows


Polevi   (2003-12-02 10:31:00) [8]

>panov © (01.12.03 20:59) [5]
для таких целей не глупые люди придумали XML

>Makhanev A.S. © (02.12.03 00:10) [6]
http://inex.kiev.ua/a.cgi?gid=31&t=_blank&id=38668428&type=iframe


Makhanev A.S.   (2003-12-02 00:10:00) [9]


> panov © (01.12.03 20:59) [5]

Скажите подалуйста,
какие книжки по теме практического применения сокетов существуют?
А также практика по программированию TCP\IP.

Мне очень захотелось иметь "Эффективное программирование TCP\IP." - но, к сожалению её нет в продаже:(


panov   (2003-12-01 20:59:00) [10]

еще вариант - передаются данные всегда фиксированной длины(структура), но это уже сложнее протокол.


Makhanev A.S.   (2003-12-01 20:32:00) [11]


> Для двоичных данных определяется структура(как один из методов),
> для которой в первых позициях передается длина передаваемых
> данных.
> Можно и совместить эти два варианта, и не различать текстовые
> и двоичные данные.


К этому я как-раз и пришёл - передавать в первых n байтах длину потока, но боялся изобрести велосипед.

А какие есть другие методы?

Буду очень благодарен за полезную информацию.


panov   (2003-12-01 20:05:00) [12]

>Makhanev A.S. © (01.12.03 20:01) [2]

Для текста именно такое решение - символы-разделитель.
Для двоичных данных определяется структура(как один из методов), для которой в первых позициях передается длина передаваемых данных.
Можно и совместить эти два варианта, и не различать текстовые и двоичные данные.


Makhanev A.S.   (2003-12-01 20:01:00) [13]


> panov © (01.12.03 19:45) [1]

Это я понимаю.
SendText - общий случай.
В приложении же будет SendStream либо SendBuf...
Постоянный парсинг несколько проблемное решение... - хотя вставлять свой разделительный символ - тоже решение:)
Спасибо!


panov   (2003-12-01 19:45:00) [14]

На клиенте -
SendText("123"+#13+#10);
SendText("456"+#13+#10);

На сервере разбираем этот текст.


Наверх

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