|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.03.2012, 19:19 | #1 |
Участник клуба
Регистрация: 23.07.2007
Сообщений: 1,054
|
Обмен данными клиент/сервер, delphi
тут http://www.programmersforum.ru/showthread.php?t=190283 уже обсуждалась тема, но кажется я шел не по правильному пути.
Я пишу сейчас что то вроде протокола общения клиента с сервером. Юзаю сокеты (кстати на Delphi пишу). Так как у меня была проблема в слипании пакетов я решил использовать фиксированную длинну. на данный момент 44 байта. По сути это набор из integer переменных 11 штук))) - пока хватает. (для корректной отправки integer переменной надо 4 байта), но иногда мне надо передавать не только числа но и маленькие текстовые сообщения. Я завел два типа данных Код:
Отправка сообщения происходит примерно так: Код:
Код:
в первом числе в обоих типах данных у меня хранится идентификатор комманды - по нему и определяется какой это пакет и как с ним оперировать Лучший способ здесь - прочитать пакет в обе переменные и уже потом в зависимости от идентификатора юзать первую или вторую переменную. но как прочитать пакет в обе переменные одновременно? пробовал так: Код:
Писано по д'Эльфийски
|
12.03.2012, 11:42 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Хочешь честно?
Я забил на устаревшие компоненты сокетов и использую ИНДИ. В ней решена проблема разреза пакетов. P.S. по крайней мере я передавая сотни килобайтов символов в сообщении на разрывы не нарывался.
I'm learning to live...
|
12.03.2012, 18:29 | #3 |
Участник клуба
Регистрация: 23.07.2007
Сообщений: 1,054
|
ну там опять же такая же проблема встанет. я конечно могу передавать не 44 байта а 88 склеив два типа данных в один но зачем посылать полупустые пакеты
Писано по д'Эльфийски
|
12.03.2012, 19:04 | #4 |
Участник клуба
Регистрация: 23.07.2007
Сообщений: 1,054
|
Может как то так получится
Код:
тьфу ты. не в ту тему написал
Писано по д'Эльфийски
|
12.03.2012, 20:20 | #5 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
в слипании проблем нет... протокол гавно
кто тебе мешает размер структур передавать передавать если сервер структуры не разгребает а только как ретранслятор то посылай размер первым делом Код:
type pmestext=^mestext; mestext=record id:integer;//идентификатор команды ed:integer; pd:integer; text:string[0..0]; end; pmestext(Data)^.ed
Не стесняемся, плюсуем!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Требуется написать программу на Delphi 7 - Обмен данными между MySQL и Excel | yaskin | Фриланс | 9 | 08.11.2011 11:31 |
Delphi 7, клиент-сервер, СУБД | ПрограммеррР | Помощь студентам | 0 | 12.05.2010 19:36 |
Builder и Delphi клиент сервер | maldun | Общие вопросы C/C++ | 0 | 26.04.2010 15:15 |
Обмен данными между двумя формами в Delphi | NecroSlider | Помощь студентам | 2 | 30.07.2009 11:52 |
Создать клиент и сервер. Delphi | SPQR | Работа с сетью в Delphi | 4 | 12.11.2007 12:48 |