当前上网模式是用TP-Link路由器和ADSL调制解调器, 如何编写一个程序, 能让adsl猫重新拨号,获得新的ip地址? 
(就像在浏览器中登陆路由器管理界面,使用里面的断开/连接功能)

解决方案 »

  1.   

    如果路由器支持Telnet模式的话,直接用socket发命令就可以了,否则就使用如WebBrowser之类的进行操作。
      

  2.   

    另外,也可以试试使用TIdHTTP来操作。
      

  3.   

    http://www.2ccc.com/article.asp?articleid=3879
    如果如楼上所说,楼主可以尝试下这个
      

  4.   

    webbrowser思路倒是挺简单, 试试
      

  5.   

    {* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
    procedure TRasDialerForm.Dial(EntryName, UserName, Password : String);
    var
        rdParams : TRASDIALPARAMS;
        dwRet    : DWORD;
        Buf      : array [0..255] of Char;
    begin
        hRasConn := GetActiveConnHandle(EntryName);
        if hRasConn <> 0 then begin
            LogMessage('Connection already active');
            Connected;
            ConnectTime := $FFFFFFFF;
            Exit;
        end;    // setup RAS Dial Parameters
        FillChar(rdParams, SizeOf(rdParams), 0);
        rdParams.dwSize              := SizeOf(TRASDIALPARAMS);
        strCopy(rdParams.szUserName,  PChar(UserName));
        strCopy(rdParams.szPassword,  PChar(Password));
        strCopy(rdParams.szEntryName, PChar(EntryName));
        rdParams.szPhoneNumber[0]    := #0;
        rdParams.szCallbackNumber[0] := '*';
        rdParams.szDomain            := '*';    g_hWnd := Handle;
        hRasConn := 0;;
        dwRet  := RasDialA(nil, nil, @rdParams, 0, @RasDialFunc, @hRasConn);
        if dwRet <> 0 then begin
            RasGetErrorStringA(dwRet, @Buf[0], SizeOf(Buf));
            LogMessage(IntToStr(dwRet) + ' ' + Buf);
            Disconnected;
        end
        else begin
            LogMessage('Dialing ''' + EntryName + '''');
            CancelButton.Enabled  := TRUE;
            ConnectButton.Enabled := FALSE;
        end;
    end;