La verdad es que después de la explicación de
jachguate, hasta me da un poco de vergüenza sugerir esto, pero puedes utilizar el Telnet para comunicarte con el router. Lo malo que tiene este método es que, como bien dice Casimiro, tendrás adaptarlo a cada modelo de router.
En cuanto al snmp, había oído hablar de el, se que mi router lo tiene,
pero he de reconocer que apenas se como funciona. La verdad es que me ha picado la curiosidad y lo voy a poner en mi lista de cosas para aprender ...
Aquí te dejo un ejemplo de como hacerlo por telnet para un router COMTREND de telefónica (el que yo tengo). Espero que te sirva, al menos mientras no encuentres como hacerlo con snmp.
Edito:
El programa adjunto tiene un fallo en la función Conectar si se le pasa un nombre en vez de la ip, la función corregida seria la siguiente:
Código Delphi
[-]
function Conectar(Host: string; Puerto: Integer): TSocket;
var
Address: u_long;
HostEnt: phostent;
Addr: sockaddr_in;
begin
Result:= INVALID_SOCKET;
Address:= inet_addr(Pchar(Host));
if Address = INADDR_NONE then
begin
HostEnt:= gethostbyname(PChar(Host));
if HostEnt <> nil then
Address:= PInAddr(HostEnt.h_addr_list^)^.S_addr;
end;
if Address <> INADDR_NONE then
begin
Result:= socket(AF_INET, SOCK_STREAM, 0);
if Result <> INVALID_SOCKET then
begin
Addr.sin_family:= AF_INET;
Addr.sin_addr.S_addr:= Address;
Addr.sin_port:= htons(Puerto);
if connect(Result, Addr, Sizeof(Addr)) = SOCKET_ERROR then
begin
closesocket(Result);
Result:= INVALID_SOCKET;
end;
end;
end;
end;