Ada_Ru форум

Обсуждение языка Ада

client-server

Оставить новое сообщение

Сообщения

Aleksey Ulasevich
client-server
2005-07-30 19:58:57

Трям!

 

А какие средства есть в gnat для создания клиент-серверных программ? Т. е. реализующие IPC.

 

-- С уважением,

Алексей Ю. Уласевич

(A.STAKANOV)

http://www.livejournal.com/users/a_stakanov/

А какие средства есть в gnat для создания клиент-серверных программ? Т. е. реализующие IPC.

 

GLADE и PolyOrb.

 

 

 

 

Vasiliy Fofanov п©п╦я┬п╣я┌:

 

п░ п╨п╟п╨п╦п╣ я│я─п╣п╢я│я┌п╡п╟ п╣я│я┌я▄ п╡ gnat п╢п╩я▐ я│п╬п╥п╢п╟п╫п╦я▐ п╨п╩п╦п╣п╫я┌-я│п╣я─п╡п╣я─п╫я▀я┘ п©я─п╬пЁя─п╟п╪п╪? п╒.

п╣. я─п╣п╟п╩п╦п╥я┐я▌я┴п╦п╣ IPC.

GLADE п╦ PolyOrb.

 

п÷я─п╬ GLADE п╡п╦п╢п╣п╩ п╫п╟ www.adacore.com, п╫п╬ п╡п╬я┌ я┌п╬п╩я▄п╨п╬ я│я│я▀п╩п╨я┐ п╫п╟

п╢п╬п╨я┐п╦п╣п╫я┌п╟я├п╦я▌ п╫п╣ п╡п╦п╢п╣п╩ ((((

п°п╬п╤п╣я┌ п╨я┌п╬ п╥п╫п╟п╣я┌?

--

п║ я┐п╡п╟п╤п╣п╫п╦п╣п╪,

п░п╩п╣п╨я│п╣п╧ п╝. пёп╩п╟я│п╣п╡п╦я┤

(A.STAKANOV)

http://www.livejournal.com/users/a_stakanov/

 

 

 

 

Aleksey Ulasevich п©п╦я┬п╣я┌:

 

Vasiliy Fofanov п©п╦я┬п╣я┌:

п░ п╨п╟п╨п╦п╣ я│я─п╣п╢я│я┌п╡п╟ п╣я│я┌я▄ п╡ gnat п╢п╩я▐ я│п╬п╥п╢п╟п╫п╦я▐ п╨п╩п╦п╣п╫я┌-я│п╣я─п╡п╣я─п╫я▀я┘ п©я─п╬пЁя─п╟п╪п╪? п╒.

п╣. я─п╣п╟п╩п╦п╥я┐я▌я┴п╦п╣ IPC.

GLADE п╦ PolyOrb.

п÷я─п╬ GLADE п╡п╦п╢п╣п╩ п╫п╟ www.adacore.com, п╫п╬ п╡п╬я┌ я┌п╬п╩я▄п╨п╬ я│я│я▀п╩п╨я┐ п╫п╟

п╢п╬п╨я┐п╦п╣п╫я┌п╟я├п╦я▌ п╫п╣ п╡п╦п╢п╣п╩ ((((

п°п╬п╤п╣я┌ п╨я┌п╬ п╥п╫п╟п╣я┌?

 

http://libre.act-europe.fr/polyorb/

 

--

п║ я┐п╡п╟п╤п╣п╫п╦п╣п╪,

п░п╩п╣п╨я│п╣п╧ п╝. пёп╩п╟я│п╣п╡п╦я┤

(A.STAKANOV)

http://www.livejournal.com/users/a_stakanov/

Vasiliy Fofanov wrote:

>А какие средства есть в gnat для создания клиент-серверных программ? Т. >е. реализующие IPC.

 

GLADE и PolyOrb.

 

GLADE и PolyORB - это библиотеки поддержки _распределенных_ вычислений.

IPC (interProcess Communication) - внутренние средства операционной системы для обеспечения межпроцессного взаимодействия в рамках одной вычислительной машины. И представлены они библиотекой Florist.

 

 

--

Vadim Godunko

Vadim Godunko пишет:

 

IPC (interProcess Communication) - внутренние средства операционной

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

вычислительной машины. И представлены они библиотекой Florist.

Вот только описания не удалось найти (((((

 

-- С уважением,

Алексей Ю. Уласевич

(A.STAKANOV)

http://www.livejournal.com/users/a_stakanov/

Vadim Godunko пишет:

 

IPC (interProcess Communication) - внутренние средства операционной

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

вычислительной машины. И представлены они библиотекой Florist.

А не проще функции системы исипользовать? например вот так:

 

with System, Interfaces, Interfaces.C;

use System,Interfaces, Interfaces.C;

 

 

package IPC is

 

IPC_ERROR:constant Integer := -1;

 

IPC_PRIVATE:constant Integer:= 0;

IPC_EXCL:constant Unsigned_32 := 8#002000#;

IPC_CREAT:constant Unsigned_32 := 8#001000#;

IPC_NOWAIT:constant Unsigned_32 := 8#004000#;

MSG_NOERROR:constant Unsigned_32:= 8#00010000#;

IPC_RMID:constant Integer :=0;

IPC_SET:constant Integer :=1;

IPC_STAT:constant Integer :=2;

function MsgGet(key:Integer; flag:Unsigned_32) return Integer;

pragma Import(C,MsgGet,"msgget");

function MsgSnd(msgfd:Integer; msgPtr: Address;

len:Integer; flag: Unsigned_32) return Integer;

pragma Import(C,MsgSnd,"msgsnd");

function MsgRcv(msgfd:Integer; msgPtr: Address;

len:Integer; mtype: Integer; flag: Unsigned_32) return Integer;

pragma Import(C,MsgRcv,"msgrcv");

function MsgCtl(msgfd:Integer; cmd:Integer; buf: Address) return Integer;

pragma Import(C,MsgCtl,"msgctl");

end Ipc;

 

 

Должно работать на любой системе совместимой с POSIX.1.

 

-- С уважением,

Алексей Ю. Уласевич

(A.STAKANOV)

http://www.livejournal.com/users/a_stakanov/

IPC (interProcess Communication) - внутренние средства операционной системы для обеспечения межпроцессного взаимодействия в рамках одной вычислительной машины. И представлены они библиотекой Florist.

 

Пардон, был невнимателен. Ты прав конечно.

Aleksey Ulasevich wrote:

 

Должно работать на любой системе совместимой с POSIX.1.

 

Должно /= будет.

 

Florist есть реализация стандарта (номер к сожалению не помню) на связку Ada-POSIX. Т.е. с достаточно высокой степенью гарантии программа, созданная с использованием Florist будет работать на другой платформе.

Предложенный пакет этого не позволит. Причин несколько:

 

1. Любая платформа славится ошибками (Florist содержит их обходы)

2. Любая платформа славится рацухами (Florist их приводит к стандартному виду)

 

3. Числовые константы на разных системах очень сильно разнятся. (Кстати, POSIX не вводит конкретных значений для большинства параметров, а объявляет только их символические имена)

 

Типичный пример - полная несовместимость констант и API сокетов IPv4 у Linux и FreeBSD.

 

А Florist ориентированная программа работает без изменений в обоих случаях.

 

--

Vadim Godunko

Vadim Godunko wrote:

Aleksey Ulasevich wrote:

 

>Должно работать на любой системе совместимой с POSIX.1.

 

 

Должно /= будет.

 

Да, и забыл самое главное!

 

Использование Florist никогда не позволит произойти разрушению памяти. Не смотря на то, что содержит прямой и низкоуровневый интерфейс с C.

 

--

Vadim Godunko

Vadim Godunko пишет:

 

А Florist ориентированная программа работает без изменений в обоих случаях.

 

Красота. Для полного счастья не хватает только Florist Manual (((((

 

-- С уважением,

Алексей Ю. Уласевич

(A.STAKANOV)

http://www.livejournal.com/users/a_stakanov/

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти