rasp_pppip,
@raspppip,
@dwsize) = 0 then
result := strpas(raspppip.szipaddress);
end;
end;
end;
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function rasdiala; external rasapi32 name 'rasdiala';
function rasgeterrorstringa; external rasapi32 name 'rasgeterrorstringa';
function rashangupa; external rasapi32 name 'rashangupa';
function rasgetconnectstatusa; external rasapi32 name 'rasgetconnectstatusa';
function rasenumconnectionsa; external rasapi32 name 'rasenumconnectionsa';
function rasenumentriesa; external rasapi32 name 'rasenumentriesa';
function rasgetentrydialparamsa; external rasapi32 name 'rasgetentrydialparamsa';
function raseditphonebookentrya; external rasapi32 name 'raseditphonebookentrya';
//function rasentrydlga; external rasapi32 name 'rasentrydlga';
function rascreatephonebookentrya; external rasapi32 name 'rascreatephonebookentrya';
function rasgetprojectioninfoa; external rasapi32 name 'rasgetprojectioninfoa';
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
end.
有了这些函数,然后可以做自己的拨号程序了
program autodial;
{$apptype console}
uses
sysutils,inifiles,windows,winsock,
ras in 'ras.pas';
var
dirpath,entryname,username,password,visithost,visiturl,visitparam:string;
checkvisit:boolean;
nrasconncount: dword;
arasconn:array [0..10] of trasconn;
hrasconn:thrasconn;
f:tinifile;
isconnected:boolean;
procedure logmessage(msg:string);
var
logfile:textfile;
begin
try
assignfile(logfile,dirpath+'log.txt');
append(logfile);
writeln(logfile,datetimetostr(now)+','+msg);
closefile(logfile);
writeln(datetimetostr(now)+','+msg);
except
end;
end;
function getip:string;
var
ipaddr : string;
begin
ipaddr := rasgetipaddress;
if ipaddr > '' then
result:=ipaddr
else
result:='unknown';
end;
function initsocket(var asocket:tsocket;aaddr:string;aport:integer;atimeout:integer):integer;
var
mywsa: wsadata;
sin: tsockaddr;
begin
result:=0;
if wsastartup(makeword(2,2), mywsa) <> 0 then //初始化
begin
wsacleanup;
result:=1;
exit;
end;
asocket:=socket(af_inet, sock_stream, ipproto_tcp); //创建socket
if asocket = invalid_socket then
begin
wsacleanup;
result:=2;
exit;
end;
sin.sin_family := af_inet;
sin.sin_port := htons(aport);
sin.sin_addr.s_addr := inet_addr(pchar(aaddr));
if connect(asocket, sin, sizeof(sin)) = socket_error then
begin
closesocket(asocket);
wsacleanup;
result:=9;
exit;
end;
if setsockopt(asocket,sol_socket,so_rcvtimeo,pchar(@atimeout),sizeof(atimeout))=socket_error then //设置接收超时为3秒
begin
closesocket(asocket);
wsacleanup;
result:=6;
exit;
end;
if setsockopt(asocket,sol_socket,so_sndtimeo,pchar(@atimeout),sizeof(atimeout))=socket_error then //设置发送超时为3秒
begin
closesocket(asocket);
wsacleanup;
result:=7;
exit;
end;
end;
procedure uninitsocket(asocket:tsocket);
begin
try
closesocket(asocket); //关闭socket
wsacleanup;
except
end;