Передать данные таблицы через локальную сеть

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Dr_Grizzly
Сообщения: 406
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

15 мар 2011, 09:56

День добрый коллеги! Хочу обратится за советом. Пишу нечто сетевой базы данных. Есть серверная часть и куча клиентов. Используется БД Access через ADO. У всех есть в базе одна и та же таблица с одинаковым набором колонок. Задача стоит - чтоб пользователь, сидя за серверной частью, мог выслать на клиентскую часть в локальной сети значение одной строки таблицы в такую же таблицу у них.

Какие пути решения посоветуете? Использовать socket, tcp, xml или что-то еще интересней и проще? ))

Мысль крутится использовать тип record для сбора данных из таблицы, и попробовать как-то передать значение переменой типа record через socket строкой или еще как-то... а на том конце в такой же тип переменной получить данные...

Вот что я нашел по Stream

Код: Выделить всё

procedure SerializeString(AString:string; AStream:TStream);
var l:integer;
begin
     l:=Length(AString);
    AStream.Write(l,Sizeof(l));
    if l>0 then AStream.WriteBuffer(AString[1],l);
end;

function UnserializeString(AStream:TStream):string;
var l:integer; s:string;
begin
   AStream.Read(l,Sizeof(l));
   if l>0 then
   begin
      SetLength(s,L);
     AStream.ReadBuffer(s[1],L);
   end;
   Result:=s;
end;

procedure TForm1.RzButton1Click(Sender: TObject);
var
ms:tstream;
begin
 SerializeString('Првиет',ms); // Почему-то ругается что не может сделать запись в Stream... я мало знаю эту тему, но думаю копаю в правильном направлении
end;
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

15 мар 2011, 13:09

А что локалка настолько огромная что нельзя напрямую подключиться к серваку базы данных и с ним работать?
[syntax=Delphi] [/syntax]
Dr_Grizzly
Сообщения: 406
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

16 мар 2011, 11:12

Как подсказывает мне опыт - при подключении к одной базе данных *.mdb более 5-и пользователей - сеть забивается на 60-70%. А так как пользователей более 60 чел - этот вариант не катит... СУБД я не могу использовать т.к. нужен выделенный сервер для этого и сама СУБД. Поэтому озадачился решить вопрос как передать данные строки конкретно указанному пользователю.
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

16 мар 2011, 11:37

Где-то тут тоится лож, по мусклу разрабы писали цифру в 60000 одновременно обслуживаемых коннектах. Как насчёт сжатия трафика если забивает.. Вообще если нет выделенного ip для сервера, сажаешь демонов на порт клиентов и рассылаешь широкополосные пакеты внутри сети на этот порт, клиенты его ловят и расжовывают. Таким образом можно вообще организовать обмен между компами без привязки к ip. Конкретезировать пользователя уже твой гемморой при этой схеме..
[syntax=Delphi] [/syntax]
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

23 мар 2011, 13:45

акцесс на 60 юзеров - изврат, кмк
ограничений на использование СУБД не увидел - акцессовая база поди тоже на одной машине находится. Вот пусть она сервером и станет для нормальной базы. Вариантов бесплатных - тьма, кроме мускула как минимум firebird
Изображение
Ответить