Jak sprawdzic czy server ma wewnetrzne lub zewnetrrzne ip ?

0

Mam taka funkcje jak ponizej i mam pytanie czy da sie przy jej uzyciu sprawdzic czy komp komrzysta aktualnie z polaczenia modemowego czy tez lan ? I mam jeszcze jedno pytanko dlaczego jak wezme w komentarz zmienna "Flags" to funkcja i tak dziala w dodatku poprawnie [???] :-/

function TForm1.Connected: Boolean;
var
Flags: PDWORD;
begin
{Flags := INTERNET_CONNECTION_MODEM or INTERNET_CONNECTION_LAN or
INTERNET_CONNECTION_PROXY or INTERNET_CONNECTION_MODEM_BUSY;}
Result := InternetGetConnectedState(@Flags,0);
end;

0

chłopie zamiast jęczeć jak stara baba i pytać o coś gdzie się da wystarczyło by zajrzeć do pomocy!!!

MSDN napisał(a)

lpdwFlags
[out] Pointer to a variable that receives the connection description. This parameter may return a valid flag even when the function returns FALSE. This parameter can be one or more of the following values.

Return Values

Returns TRUE if there is an active modem or a LAN Internet connection, or FALSE if there is no Internet connection, or if all possible Internet connections are not currently active. For more information, see the Remarks section.

0

OK cos tam napisalem ale mam jeszcze male trunosci no i nie wiem czy to tak naprawde bedzie dzialac
wyrzuca mi jeszcze taki blad przy kzdej pogrubionej linijce "[Error] Unit1.pas(159): Operator not applicable to this operand type" Myslalem o podcstawieniu w CASE zamiast result Flags ale to chyba by nie wypalilo :-/ Jak by ktos mogl cos podpowiedziec byl bym wdzieczny. Zalezy mi na tym zeby po wykonaniu tej funkcji moglbym sobie wypisac badz wyswietlic z jakim rodzajem polaczenia mam do czynienia.

function TForm1.Connected: Boolean;
var
Flags: PDWORD;
ConnType:string;

begin
Result := InternetGetConnectedState(@Flags,0);

Case Result of
Flags and wininet.INTERNET_CONNECTION_LAN : ConnType := 'LAN';
Flags and wininet.INTERNET_CONNECTION_MODEM : ConnType := 'Modem';
Flags and wininet.INTERNET_CONNECTION_PROXY : ConnType := 'Proxy';

end;

end;

0

nie możesz tak zrobić - zamiast case daj if then else if

0

Na if-ie tez nie idzie nie jestem pewien powiazania zmiennej w funkcji InternetGetConnectedState(@Flags,0) ze zmienna Flags and wininet.INTERNET_CONNECTION_LAN i w pozostalych dwoch nie wiem jak wydobyc z tej funkcji ta zmienna czytalem na msdn i cos podobnego bylo tylko ze pod Jave :-/
Probowalem jeszcze czego takiego ale ten sam blad [Error] Unit1.pas(162): Operator not applicable to this operand type

WinInet.INTERNET_CONNECTION_LAN -dopisze tylko jeszcze ze ta wartos to stala.

if (Result) and (Flags = WinInet.INTERNET_CONNECTION_LAN) then
begin
memo1.Lines.Add('Lan');
end;

0
var 
  connflags:  DWord; 
begin 
  if InternetGetConnectedState( @connflags, 0) then  // requires IE 4.0 or 
higher 
  begin 
    Result := 'Internet Connection Present (' + IntToStr( connflags) + ')' + 
#13; 
    if (( connflags and INTERNET_CONNECTION_MODEM) <> 0) then 
      Result := Result + ' (Modem)' 
    else if (( connflags and INTERNET_CONNECTION_LAN) <> 0) then 
      Result := Result + ' (LAN)'; 
    if (( connflags and INTERNET_CONNECTION_PROXY) <> 0) then 
      Result := Result + #13 + '(Using Proxy)'; 
    if (( connflags and INTERNET_RAS_INSTALLED) <> 0) then 
      Result := Result + #13 + '(Internet RAS installed)'; 
    if (( connflags and INTERNET_CONNECTION_OFFLINE) <> 0) then 
      Result := Result + #13 + '(Offline)' 
    else 
      Result := Result + #13 + '(Online)'; 
    if (( connflags and INTERNET_CONNECTION_CONFIGURED) <> 0) then 
      Result := Result + #13 + '(Might or might not currently be 
connected)'; 
  end 
  else 
    Result := 'No Internet Connection'; 
end;
0

:-O Zatkalo mnie dzieki :-) kurcze skad ty bierzesz takie materialy swietne rozwiazanie ;-)

0

z googla :>

0

Jako, że pytanie w poście i w temacie postu trochę się nie zgadzają, mała wskazówka dla autora pytania: można mieć połączenie przez LAN i zewnętrzne IP, więc jeśli chcesz sprawdzać to drugie za pomocą rodzaju połączenia, to raczej kiepski pomysł :P. Musiałbyś jeszcze chyba klasę aktualnego IP sprawdzić przy połączeniu LAN.

0

Hmmm no cos w tym jest :-/ ale jak ktos bedzie mial Forwardowanie porty to i tak wykryje jako Lan albo proxy lub brak polaczenie P2P bo rzadko sie robi Forwardowanie na porcie 21. No chyba ze ktos cos jeszcze bardziej pokombinowal i ma to zew. IP ale to raczej zadziej jest spotykane wiec na razie zostane przy tej funkcji ale jak sie komus uda jakos inaczej to rozwiazac to z checia zerkne na to. :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1