Загрузка ресурсов из Интернет
Определение IP адреса и имени хоста |
*
| *
|
| |
Типовая реализация имеет вид:
var
WSAData : TWSAData;
HostName : array [0..MAX_COMPUTERNAME_LENGTH] of сhar;
HostEnt : PHostEnt;
begin
// Инициализируем winsock
WSAStartup($0101, WSAData);
// Получаем имя хоста
GetHostName(HostName, SizeOf(HostName));
// Получаем адрес по имени
HostEnt := GetHostByName(HostName);
if HostEnt <> nil then begin
Memo1.Lines.Add('Имя хоста = ' + Trim(HostName));
Memo1.Lines.Add('IP = ' + inet_ntoa(PInAddr(HostEnt.h_addr_list^)^));
end;
WSACleanup;
end;
Отправка сообщения по сети (NetSend) |
*
| *
|
| |
Мне известно два способа:
1. При помощи функции API NetMessageBufferSend
NET_API_STATUS NetMessageBufferSend(
LPTSTR servername,
LPTSTR msgname,
LPTSTR fromname,
LPBYTE buf,
DWORD buflen
);
где
- servername - имя ПК, на которое передается сообщение
- msgname - кому (имя сообщения)
- fromname - от кого
- buf - буфер, содержащий текст сообщения
- buflen - размер буфера
2. При помощи отправки сообщения через mailslot\messngr
procedure TMain.SendNetMessage(AHost, AFromSt, AToSt, AMessageSt : string);
var
hSlot : THandle;
s : string;
cb : DWORD;
begin
// Открыли mailslot с именем "messngr"
hSlot := CreateFile(PChar('\\'+AHost+'\mailslot\messngr'),
GENERIC_WRITE, FILE_SHARE_READ, 0,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
// mailslot открыт ?? Нсли да, то отправляем сообщение
if hSlot <> INVALID_HANDLE_VALUE then begin
// Подготов ка сообщения (формат "от кого#0кому#0сообщение#0"
AMessageSt := DecodeToDos(AMessageSt);
s := AFromSt + #0 + AToSt + #0 + AMessageSt + #0;
cb := length(S);
WriteFile(hSlot, s[1], cb, cb, 0);
CloseHandle(hSlot);
end;
end;
Особенность данного примера состоит в том, что при тестировании на XP при указании в
параметре AHost имени ПК все рабтало отлично, а при указании IP адреса - не срабатывало
© Зайцев Олег, "Программирование на Delphi - обмен опытом" 1999-2004. При использовании любых материалов данного сайта
необходимо указывать источник информации. Дата обновления: 22.11.2004. Сайт размещен на хостинге AGAVA -
Хостинг от AGAVA.ru