Jump to content
Golden-boy

Etablir une connexion ADSL en C/C++

Recommended Posts

Salut !

 

Je cherche depuis 6 mois comment créer un programme en C ou en C++ un peu comme ADSL autoconnect mais impossible de trouver comment établir un connexion ADSL ou comment vérifier son état.

Si quelqu'un pouvait m'aider ça serait vraiment génial, je sui même prêt à apprendre tout un autre langage rien que pour créer ce fichu programme.

merci.

Share this post


Link to post
Share on other sites

Bonjour,

Ta oublier d'indiquer l'OS sur linux je croix que c'est super facile en utilisant le terminal Windows i dont know.

bonne chance

Share this post


Link to post
Share on other sites

Si tu ne trouves pas d'implémentation toute prête d'un protocole, tu peux te servir directement sur son RFC :), on peut trouver celle du PPPoE par exemple sans problème, une traduction en FR de de celle du PPPoE l'RFC 2516.

 

bon courage

Share this post


Link to post
Share on other sites

merci mouradski mais ce n'est pas vraiment ce que je cherche mon programme doit communiquer avec Windows pour qu'il établie une connexion PPPoE et c'est Windows qui s'occupe du protocol, les programmes ne peuvent pas accéder à ça.

Share this post


Link to post
Share on other sites

Salut, tu peux aussi utiliser les objets ole de l'api com de windows, ça te permettra de "simuler" le clique sur connecter, j'avais fait un truque du genre sous delphi, je te donne le code, je traduirai en cpp dès que j'ai le temps ;) :

uses ComObj;

procedure SwitchOnOff;
var
  sConnectionName : string;
  sEnableVerb : string;
  sDisableVerb : string;
  shellApp, oControlPanel, oNetConnections, oLanConnection: OleVariant;

  I, J: integer;
  bEnabled: boolean;
  oEnableVerb, oDisableVerb: Variant;
  s: string;

function NormalString(S: string): string;
var
 I: Integer;
begin
 Result := '';
 for I := 1 to Length(S) do
 begin
   if (S[i] >= 'A') and (S[i]       S[i] := Char(Word(S[i]) or $0020);
   case S[i] of
     ' ': ;
     '&': ;
     'é', 'è', 'ê': Result := Result + 'e';
     else Result := Result + S[i];
   end;
 end;
end;

function IsConnectFolder(S: string): Boolean;
begin
 S := NormalString(S);
 Result := (S = 'connexionsreseau') or (S = 'networkconnection');
end;

function IsEnableConnect(S: string): Boolean;
begin
 S := NormalString(S);
 Result := (S = 'activer') or (S = 'activate') or (S = 'seconnecter') or (S = 'connect');
end;
begin
  shellApp := CreateOleObject('shell.application');
  oControlPanel := shellApp.Namespace(3);

  oNetConnections := Null;
  for I := 0 to oControlPanel.Items.Count - 1 do
  begin
     if IsConnectFolder(oControlPanel.Items.item(I).Name) then
     begin
        oNetConnections := oControlPanel.items.Item(I).getfolder;
        Break;
     end;
  end;
  if VarIsNull(oNetConnections) then
  begin
    if oControlPanel.Items.Count > 3 then
      oNetConnections := oControlPanel.items.Item(3).getfolder
    else
      Exit;
  end;

  for I := 0 to oNetConnections.items.count - 1 do
  begin
    oLanConnection := oNetConnections.items.item(I);
    for J := 0 to oLanConnection.verbs.Count - 1 do
      if IsEnableConnect(oLanConnection.verbs.item(J).name) then
      begin
         oLanConnection.invokeverb(oLanConnection.verbs.item(J).name);
         oLanConnection.verbs.item(J).DoIt;
	  Break;
      end;
  end;
end;

cette procedure te connecte ou te déconnecte selon ton état initial ..

j'avoue ce n'est pas très propre comme méthode, mais sa a le mérite de fonctionner;

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Announcements



×
×
  • Create New...