如何在启动机器时自动运行adsl拨号(1)[6]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 zhujunfeng 的 blog

                                     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;

本文关键:adsl 拨号 服务
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top