Страница 1 из 1

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

Добавлено: 15 мар 2011, 09:56
Dr_Grizzly
День добрый коллеги! Хочу обратится за советом. Пишу нечто сетевой базы данных. Есть серверная часть и куча клиентов. Используется БД 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;

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

Добавлено: 15 мар 2011, 13:09
Duncon
А что локалка настолько огромная что нельзя напрямую подключиться к серваку базы данных и с ним работать?

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

Добавлено: 16 мар 2011, 11:12
Dr_Grizzly
Как подсказывает мне опыт - при подключении к одной базе данных *.mdb более 5-и пользователей - сеть забивается на 60-70%. А так как пользователей более 60 чел - этот вариант не катит... СУБД я не могу использовать т.к. нужен выделенный сервер для этого и сама СУБД. Поэтому озадачился решить вопрос как передать данные строки конкретно указанному пользователю.

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

Добавлено: 16 мар 2011, 11:37
Duncon
Где-то тут тоится лож, по мусклу разрабы писали цифру в 60000 одновременно обслуживаемых коннектах. Как насчёт сжатия трафика если забивает.. Вообще если нет выделенного ip для сервера, сажаешь демонов на порт клиентов и рассылаешь широкополосные пакеты внутри сети на этот порт, клиенты его ловят и расжовывают. Таким образом можно вообще организовать обмен между компами без привязки к ip. Конкретезировать пользователя уже твой гемморой при этой схеме..

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

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