Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

соединение

Здравствуйте!
Как можно соединить два компа с помощью моемов? То есть как сделать
чтобы клиент в программе ввёл телефон сервера и подконнетился к
серверу? Delphi 6.

Ответить   Sun, 15 Feb 2004 19:47:32 +0200 (#81505)

 

Ответы:

Прив!
Вариант не мой, за что купил..)))

С уважением monah
janal***@n*****.ru

почтовые

1. Запускаем Delphi;
2. В Новом проекте добавляем в форму Tbutton, Tedit и Tmemo;
3. Вставляем "winsock";
4. объявляем структурку для IP-заголовка:

type
IPINFO = record
Ttl: char;
Tos: char;
IPFlags: char;
OptSize: char;
Options: ^char;
end;

5. объявляем структурку для хранения ICMP пакета:

type
ICMPECHO = record
Source: longint;
Status: longint;
RTTime: longint;
DataSize: Shortint;
Reserved: Shortint;
pData: ^variant;
i_ipinfo: IPINFO;
end;

6. Объявляем функции и процедуры, которые мы будем вызывать из ICMP.DLL
TIcmpCreateFile = function():integer; {$IFDEF WIN32} stdcall; {$ENDIF}
TIcmpCloseHandle = procedure(var handle:integer);{$IFDEF WIN32} stdcall;
{$ENDIF}

TIcmpSendEcho = function(var handle:integer; endereco:DWORD; buffer:variant;
tam:WORD; IP:IPINFO; ICMP:ICMPECHO; tamicmp:DWORD;
tempo:DWORD):DWORD;{$IFDEF
WIN32} stdcall; {$ENDIF}

7. В Tbutton в событие Onclick вставляем следующий код:

procedure TForm1.Button1Click(Sender: TObject);
var
wsadt: wsadata;
icmp: icmpecho;
HNDicmp: integer;
hndFile: integer;
Host: PHostEnt;
Destino: in_addr;
Endereco: ^DWORD;
IP: ipinfo;
Retorno: integer;
dwRetorno: DWORD;
x: integer;

IcmpCreateFile: TIcmpCreateFile;
IcmpCloseHandle: TIcmpCloseHandle;
IcmpSendEcho: TIcmpSendEcho;

begin
if (edit1.Text = '') then
begin
Application.MessageBox('Enter a HostName ro a IP Adress',
'Error', MB_OK);
exit;
end;
HNDicmp := LoadLibrary('ICMP.DLL');
if (HNDicmp <> 0) then
begin
@IcmpCreateFile := GetProcAddress(HNDicmp, 'IcmpCreateFile');
@IcmpCloseHandle := GetProcAddress(HNDicmp, 'IcmpCloseHandle');
@IcmpSendEcho := GetProcAddress(HNDicmp, 'IcmpSendEcho');
if (@IcmpCreateFile = nil) or (@IcmpCloseHandle = nil) or
(@IcmpSendEcho
= nil) then
begin
Application.MessageBox('Error getting ICMP Adress', 'Error',
MB_OK);

FreeLibrary(HNDicmp);
end;
end;
Retorno := WSAStartup($0101, wsadt);

if (Retorno <> 0) then
begin
Application.MessageBox('Can?t Load WinSockets', 'WSAStartup', MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
end;

Destino.S_addr := inet_addr(Pchar(Edit1.text));
if (Destino.S_addr = 0) then
begin
Host := GetHostbyName(PChar(Edit1.text));
end
else
begin
Host := GetHostbyAddr(@Destino, sizeof(in_addr), AF_INET);
end;

if (host = nil) then
begin
Application.MessageBox('Host not found', 'Error', MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
exit;
end;
memo1.Lines.Add('Pinging ' + Edit1.text);

Endereco := @H*****.h_addr_list;

HNDFile := IcmpCreateFile();
for x := 0 to 4 do
begin
Ip.Ttl := char(255);
Ip.Tos := char(0);
Ip.IPFlags := char(0);
Ip.OptSize := char(0);
Ip.Options := nil;

dwRetorno :=
pSendEcho(
HNDFile,
Endereco^,
null,
0,
Ip,
Icmp,
sizeof(Icmp),
DWORD(5000));
Destino.S_addr := icmp.source;
Memo1.Lines.Add('Ping ' + Edit1.text);
end;

IcmpCLoseHandle(HNDFile);
FreeLibrary(HNDicmp);
WSACleanup();
end;

У данного примера есть один недостаток - программа не воспримет доменное имя,
только IP-адресс. Для пользователей NT не используйте функцию Ic
mpCloseHandle.

Взял из прекрасного справочника DelphistFAQ's
http://www.forum.vingrad.ru/index.php?act=SF&f=32

С уважением,
Борис Сурин, surin_***@m*****.ru
Номер выпуска : 2035
Возраст листа : 148 (дней)
Количество подписчиков : 386
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/81642
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Tue, 17 Feb 2004 00:03:31 +0600 (#81642)

 

Здравсвутйте !

Возможно, надо посмотреть исходники программ-терминалов.
В MSDN точно есть пример на VC. Должно быть, в делфе есть что то похожее.

--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru
Номер выпуска : 2038
Возраст листа : 148 (дней)
Количество подписчиков : 386
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/81705
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Mon, 16 Feb 2004 22:50:06 +0300 (#81705)

 

Привет keel,

Все просто, тебе надо изучить как программировать COM порт, на котором
сидит модем .. примеров масса .. Удачи ...

Ответить   Tue, 17 Feb 2004 15:00:08 +0500 (#82456)