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 <message>');

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<255)

do

begin

if CCode <> 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.


Информация о работе «Интранет сети»
Раздел: Радиоэлектроника
Количество знаков с пробелами: 83711
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
117155
16
14

... антенны 20м - наиболее оптимальный вариант, т.к. обеспечивает приемлемую дальность связи, при наименьших затратах на кабель и установку мачты. 2.5 Модернизация сети GSM под GPRS 2.5.1 Общая характеристика GPRS Одним из существенных недостатков сетей сотовой связи стандарта GSM на сегодняшний день является низкая скорость передачи данных (максимум 9.6 кбит/с). Да и сама организация этого ...

Скачать
5650
0
0

... малые узлы (на десятки абонентов), так и емкостью в тысячи линий. При выборе технологии доступа на «последней миле» сети оператор должен учитывать характеристики инфраструктуры (существующей или потенциальной), профиль абонентов и предлагаемые им услуги. Использование в сети Public Ethernet различных вариантов построения сегмента абонентского доступа (xDSL по медной паре, медные или оптические ...

Скачать
89542
4
2

... в компьютере, мог его угадать. При формировании пароля можно прибегнуть к помощи специального устройства, которое генерирует последовательности чисел и букв в зависимости от данных, которые задает пользователь. Существуют “невидимые” файлы. Это средство защиты состоит в изменении имени файла программы в каталоге диска таким образом, чтобы затруднить работу с файлами обычными командами DOS. ...

Скачать
226066
0
0

... ИT сектор); ориентацию на потребности граждан (местное наполнение, много он-лайновых организаций, использование ИТ в повседневной жизни, преподавание ИТ в школах) и правительственных учреждений (электронное правительство); конкурентность в телекоммуникационной области; независимое регулирование этой области с обязательствами продавца обеспечить универсальность доступа; а также э-готовое общество ...

0 комментариев


Наверх