МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Интранет сети

    рами и клиентами NetWare. Пример такой сети Ethernet с адресом се-

    ти IP 129.1.0.0 и с адресом сети IPX 84404556 приведен на рисунке

    3.7.

    Совместная работа TCP/IP и SPX/IPX

    г================¬

    ¦ NetWare Server ¦ ---------------¬

    ¦ ¦ ¦ UNIX Server ¦

    L=========T======- L-------T-------

    129.1.0.3 ¦ ¦ 129.1.0.1

    ¦ ¦

    ¦IPX Net=84404556 ¦ IP Net=129.1.0.0

    ------T---+------------T----+------------T-------------

    ¦ ¦ ¦

    ¦ ¦ ¦

    ------+--------¬ -----+---------¬ ¦ 129.1.0.2

    ¦NetWare Client¦ ¦NetWare Client¦ -----+-----------¬

    ¦ ¦ ¦ ¦ ¦UNIX Workstation¦

    L--------------- L--------------- L-----------------

    Рис.3.7.

    Сети IP и IPX могут подключаться к одному серверу NetWare. Кли-

    енты UNIX могут использовать файловое пространство сервера с по-

    мощью Netware NFS (рис.3.8.).

    Подключение сетей TCP/IP и SPX/IPX к серверу

    ---------------------¬ --------------¬

    ¦Рабочая станция UNIX¦ ¦ Сервер UNIX ¦

    L---------T----------- L-----T--------

    ¦129.1.0.2 ¦129.1.0.1

    ¦ ¦

    ¦ ¦Сеть IP=129.1.0.0

    -----------+----------------T------+-------------------

    129.1.03 ¦

    г========¦=========¬

    ¦ Сервер NetWare ¦

    L=========T========-

    ¦

    Сеть IPX = 84404556 ¦ Сеть Token Ring

    ------------------------+-----------------------¬

    L------T------------------------------------T----

    ¦ ¦

    -------+-------¬ -------+-------¬

    ¦Клиент NetWare¦ ¦Клиент NetWare¦

    L--------------- L---------------

    Рис.3.8.

    Есть возможность маршрутизации пакетов IP через сервер NetWare.

    На рис.3.9. TCP/IP в сервере Netware 1 обеспечивают маршрутизацию

    пакетов IP, давая возможность клиентам UNIX из сети IP Ethernet

    работать с сервером Netware 2.

    Маршрутизация пакетов IP через сервер NetWare

    ---------------------¬ --------------¬

    ¦Рабочая станция UNIX¦ ¦ Сервер UNIX ¦

    L---------T----------- L-----T--------

    ¦129.1.0.2 ¦129.1.0.1

    ¦ ¦

    ¦ ¦Сеть IP=129.1.0.0

    -----------+----------------T------+-------------------

    129.1.03 ¦

    г========¦=========¬

    ¦ Сервер NetWare 1¦

    L=========T========-

    ¦

    Сеть IPX = 84404556 ¦ Сеть Token Ring

    ------------------------+-----------------------¬

    L----T------------------T-----------------T------

    ¦ ¦ ¦

    -------+-------¬ г=======¦========¬ -------+-------¬

    ¦Клиент NetWare¦ ¦Сервер NetWare 2¦ ¦Клиент NetWare¦

    L--------------- L================- L---------------

    Рис.3.9.

    Включив в состав сети IP, изображенной на рис.3.10.-, маршрути-

    затор IP можно обеспечить выход в глобальную интерсеть IP.

    Средства прокладки туннелей IP обеспечивают прозрачное взаимо-

    действие сетей IPX через интерсеть IP. Туннель IP представляет

    стандартный интерфейс драйвера локальной сети для системы NetWare.

    Сама интерсеть IP является средой передачи. В этом смысле адрес IP

    выполняет в среде IP ту же функцию, что физический адрес в физи-

    ческой среде. Пример использования туннеля IP для взаимодействия

    сетей IPX через интерсеть IP приведен на рис.3.10.

    Взаимодействие сетей NetWare через туннель IP

    Туннель IP г============¬

    ¦ ¦ Сеть IPX ¦

    ¦ L======T=====-

    ¦ ¦

    -----------------¬ ¦ г============¬ ----------+------¬

    ¦ Сервер NetWare +-+-¦Интерсеть IP¦---+ Сервер NetWare ¦

    ¦ +---¦ ¦-T-+ ¦

    L--------T-------- L============- ¦ L-----------------

    ¦ ¦

    ¦ ¦

    г========¦=======¬ Туннель IP

    ¦ Сеть IPX ¦

    L================-

    Рис.3.10.

    4. ОБМЕН СООБЩЕНИЯМИ В СЕТИ.

    Две программы, работающие на разных узлах сети, могут обмени-

    ваться данными двумя способами: пересылка пакетов через низкоуров-

    невый драйвер сети и пересылка сообщений через общий файл-сервер.

    Пример программы, посылающей сообщение на консоль сервера :

    Uses Dos;

    var k : integer;

    sendString : string;

    Procedure SendToCon(Message : string);

    var

    reg : registers;

    s : array [0..64] of byte;

    i : integer;

    begin

    s[0] := 0;

    s[1] := 4;

    s[2] := $09;

    s[3] := length(Message);

    for i := 1 to Length(Message) do

    s[i+3] := ord(Message[i]);

    reg.ah := $0E1;

    reg.bx := reg.ds;

    reg.ds := seg(s);

    reg.si := ofs(s);

    intr($21,reg);

    reg.ds := reg.bx;

    end;

    begin

    If ParamCount = 0 then

    begin

    Writeln('Send message to console utility by S.Perevoznik, 1993');

    Writeln('Usage : ssend ');

    halt;

    end;

    for k := 1 to paramcount do

    begin

    SendString := SendString + Paramstr(k) + ' ';

    end;

    SendToCon(sendString);

    Writeln('Message send to console ...');

    end.

    Для передачи сообщения конкретному пользователю можно использовать

    следующие функции :

    {$F+,O+}

    Unit UICNet;

    Interface

    Uses Dos;

    Function GetUserName(ConnectionNumber : byte;

    Var ObjectFree : boolean) : string;

    Function LocalDisk : boolean;

    Procedure SendBroadcastMessage(Message:string;ConnectionNumber:byte);

    Implementation

    Function GetUserName(ConnectionNumber : byte;

    Var ObjectFree : boolean) : string;

    var

    WordPtr:^Word;

    r : registers;

    SendPacket : array[0..4] of byte;

    ReplyPacket : array[0..64] of byte;

    UserName : string;

    ObjectType : word;

    function GetWord(P: pointer): word;

    var

    WordPtr :^word;

    begin

    WordPtr := P;

    GetWord := swap(WordPtr^);

    end;

    begin

    SendPacket[2] := $16;

    SendPacket[3] := ConnectionNumber;

    WordPtr := addr(SendPacket);

    WordPtr^:=2;

    WordPtr := addr(SendPacket);

    WordPtr^ := 62;

    r.ah := $e3;

    r.ds := seg(SendPacket);

    r.si := ofs(SendPacket);

    r.es := seg(ReplyPacket);

    r.di := ofs(ReplyPacket);

    intr($21,r);

    if r.al = 0

    then

    begin

    ObjectType := GetWord(addr(ReplyPacket[6]));

    if ObjectType = 0 then ObjectFree := true

    else

    ObjectFree := false;

    move(ReplyPacket[8],UserName[1],48);

    UserName[0] := chr(48);

    GetUserName := Username;

    end;

    end;

    Function LocalDisk : boolean;

    var r : registers;

    begin

    r.ah := $19;

    intr($21,r);

    r.dl := r.al+1;

    r.ah := $e9;

    r.al := 0;

    r.dh := 0;

    intr($21,r);

    if r.ah = 128 then localdisk := true

    else localdisk := false;

    end;

    Procedure SendBroadcastMessage(Message:string; ConnectionNumber:byte);

    var

    r : registers;

    WordPtr : ^word;

    SendPacket : array [0..160] of byte;

    ReplyPacket : array [0..103] of byte;

    begin

    SendPacket[2] := 0;

    SendPacket[3] := 1;

    SendPacket[4] := ConnectionNumber;

    SendPacket[5] := length(Message);

    move(Message[1],SendPacket[6],length(Message));

    WordPtr := addr(SendPacket);

    WordPtr^ := Length(Message) + 4;

    r.ah := $e1;

    r.ds := seg(SendPacket);

    r.si := ofs(SendPacket);

    r.es := seg(ReplyPacket);

    r.di := ofs(ReplyPacket);

    intr($21,r);

    end;

    end.

    Следующая программа демонстрирует возможность получения списка поль-

    зователей, подключенных к сети:

    uses Dos;

    function GetWord(P: pointer): word;

    var

    WordPtr :^word;

    begin

    WordPtr := P;

    GetWord := swap(WordPtr^);

    end;

    Function GetLong(P:Pointer): longint;

    type long= record

    case integer of

    1:(Long1: Longint);

    2:(Word1,Word2:word);

    end;

    var LongPtr :^Long;

    L : long;

    begin

    LongPtr := P;

    L.Word1 := swap(LongPtr^.Word2);

    L.Word2 := swap(LongPtr^.Word1);

    GetLong:= L.Long1;

    end;

    Function GetConnectionInformation(ConnectionNumber:byte;

    Var ObjectName : string; var ObjectType : word;

    var ObjectID : longint; var LoginTime : string): byte;

    var

    WordPtr:^Word;

    r:registers;

    SendPacket : array[0..4] of byte;

    ReplyPacket : array[0..64] of byte;

    begin

    SendPacket[2] := $16;

    SendPacket[3] := ConnectionNumber;

    WordPtr := addr(SendPacket);

    WordPtr^:=2;

    WordPtr := addr(SendPacket);

    WordPtr^ := 62;

    r.ah := $e3;

    r.ds := seg(SendPacket);

    r.si := ofs(SendPacket);

    r.es := seg(ReplyPacket);

    r.di := ofs(ReplyPacket);

    intr($21,r);

    if r.al = 0

    then

    begin

    ObjectID := GetLong(addr(ReplyPacket[2]));

    ObjectType := GetWord(addr(ReplyPacket[6]));

    move(ReplyPacket[8],ObjectName[1],48);

    ObjectName[0] := chr(48);

    move(ReplyPacket[56],LoginTime[1],7);

    LoginTime[0] := chr(7);

    end;

    GetConnectionInformation := r.al;

    end;

    var

    ObjectName,LoginTime : string;

    ObjectType : word;

    ObjectID : longint;

    ConnectionNumber, CCode : byte;

    begin

    ConnectionNumber := 1;

    CCode := GetConnectionInformation(ConnectionNumber,

    ObjectName,ObjectType,ObjectID,LoginTime);

    while (CCode <> 253) and (ConnectionNumber 0

    then

    writeln('Cod ',CCode,ConnectionNumber)

    else if ObjectType <>0 then begin

    Writeln(ConnectionNumber,' ',ObjectType,' ',ObjectID);

    Writeln(ObjectName);

    end;

    inc(ConnectionNumber);

    CCode := GetConnectionInformation(ConnectionNumber,

    ObjectName,ObjectType,ObjectID,LoginTime);

    end;

    end.

    5. РАБОТА С ФАЙЛАМИ В ЛВС.

    Ниже приводятся тексты процедур, используемых при работе в ЛВС

    для обслуживания файловой системы:

    ; Данная библиотека процедур разработана для использования в прог-

    ; раммах, написанных на Турбо-Паскале версии 4.0 и выше.

    ; Joe R. Doupnik and Sergey V. Perevoznik, 1988 - 1993

    lprog equ 1 ; 0 for small memory, 1 for large memory model

    ; Modify lprog to match the memory model

    if lprog

    x equ 6 ; prologue overhead for large memory model

    else

    x equ 4 ; ditto, small memory model

    endif

    begin macro name ; begin a function, near or far

    public name

    if lprog

    name proc far

    else

    name proc near

    endif

    endm

    ; define Borland Pascal segments

    ; use neither Group nor Class

    data segment word public

    data ends

    cseg segment byte public

    assume cs:cseg, ds:data, es:nothing

    ;--------------------------------

    ; Extended Open a File func(61) (3DH)

    ;

    ; var

    ; Mode, Handle, RetCode : Integer;

    ; Filename : String[n];

    ;

    ; RetCode := xtndopn(Mode, Handle, Filename);

    ;

    begin xtndopn

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+8] ; put the mode in ax

    mov ax,[si]

    mov ah,03Dh ; put the function in ah

    lds dx,[bp+x] ; ptr to ASCIIZ string

    inc dx ; add 1 to get to the beginning of the string

    int 21h

    jc xtndopx ; carry set means failure

    lds di,[bp+x+4] ; put the handle into the variable

    mov [di],ax ; if there is no error and

    xor ax,ax ; return a 0

    xtndopx:pop ds

    pop bp

    ret 14

    xtndopn endp

    ;--------------------------------

    ; Get or Set File Attributes(handle) func(67) (43H)

    ;

    ; var

    ; Func, Attribute, ErrCode : Integer;

    ; Filename : String[n];

    ;

    ;ErrCode := setattr(Func, Attribute, Filename);

    ;

    begin setattr

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+8] ; put the subfunction in ax

    mov ax,[si]

    mov ah,043h ; put the function in ah

    lds dx,[bp+x] ; ptr to var desc block for ASCIIZ string

    inc dx ; add 1 to get the address of the string

    lds si,[bp+x+4] ; put the attribute to set in cx

    mov cx,[si]

    int 21h

    jc setattx ; carry set means failure

    lds di,[bp+x+4] ; put the returned attributes in the

    mov [di],cx ; variable if there is no error

    xor ax,ax ; and return zero

    setattx:mov ah,0

    pop ds

    pop bp

    ret 14

    setattr endp

    ;--------------------------------

    ; End of Job Flag Status func(187) (BBH)

    ;

    ; var

    ; Flag : Integer;

    ;

    ;ErrCode := eojstat(Flag);

    ;

    begin eojstat

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x] ; put the flag in ax

    mov ax,[si]

    mov ah,0BBh ; put the function in ah

    int 21h

    mov ah,0

    lds di,[bp+x]

    mov [di],ax

    pop ds

    pop bp

    ret 6

    eojstat endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Physical Record Lock: Log Record BCH

    ;

    ; var

    ; ErrCode,FileHandle,HiByteOffset,LoByteOffset : Integer

    ; HiLockLen,LoLockLen,Flags,TimeOut : Integer

    ;

    ;ErrCode := PRLH_Log(FileHandle,HiByteOffset,LoByteOffset,HiLockLen,

    ; LoLockLen,Flags,TimeOut);

    ;

    begin PRLH_Log

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+24] ; FileHandle

    mov bx,[si]

    lds si,[bp+x+20] ; ByteOffset

    mov cx,[si]

    lds si,[bp+x+16]

    mov dx,[si]

    lds si,[bp+x+4] ; AL = Log Flags

    mov ax,[si]

    lds si,[bp+x+12] ; LockLen

    mov si,[si]

    lds di,[bp+x+8]

    mov di,[di]

    lds bp,[bp+x] ; time out

    mov bp,[bp]

    mov ah,0BCH

    int 21H

    mov ah,0 ; clear the high byte of the return

    pop ds

    pop bp

    ret 30

    PRLH_Log endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Physical Record Lock: Release Rec BDH

    ;

    ; var

    ; FileHandle,HiByteOffset,LoByteOffset,ErrCode,

    ; HiWordLen,LoWordLen : integer;

    ; ErrCode := PRLH_Rel(FileHandle,HiByteOffset,LoByteOffset,HiWordLen,

    ; LoWordLen:integer);

    begin PRLH_Rel

    push bp

    mov bp,sp

    push ds

    lds si,[bp+x+16] ; FileHandle

    mov bx,[si]

    lds si,[bp+x+12] ; HiByteOffset

    mov cx,[si]

    lds si,[bp+x+8] ; LoByte

    mov dx,[si]

    lds si,[bp+x+4] ; HiWordLen

    mov si,[si]

    lds di,[bp+x] ; LoWordLen

    mov di,[di]

    mov ah,0BDH

    int 21H

    mov ah,0

    pop ds

    pop bp

    ret 22

    PRLH_Rel endp

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ;

    ; Physical Record Lock: Release Clr BEH

    ;

    ; var

    ; FileHandle,HiByteOffset,LoByteOffset,ErrCode,

    Страницы: 1, 2, 3, 4, 5


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.