Как определить динамичный IP ? А то при попытке определить выдает не верный айпи. вот используемая функция function GetLocalIP: String; const WSVer = $101; var wsaData: TWSAData; P: PHostEnt; Buf: array [0..127] of Char; begin Result := ''; if WSAStartup(WSVer, wsaData) = 0 then begin if GetHostName(@Buf, 128) = 0 then begin P := GetHostByName(@Buf); if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^); end; WSACleanup; end; end;
А какой айпи он выдает? ))) Дело в том что для компьютера может существовать несколько адресов: локальный, сетевой, внешний, виртуальный и т.д. Короче тебе надо получать не один айпишник, а их список, и из них поттом выбирать внешний.
Code: program getip; {$APPTYPE CONSOLE} uses windows,wininet; {-----------------------------------} function DownloadURL(const aUrl: string; pBuf: pChar; dwSize: cardinal): Boolean; var hSession: HINTERNET; hService: HINTERNET; dwBytesRead: DWORD; begin Result := False; hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if hSession<>nil then begin hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, 0, 0); if hService<>nil then begin if not InternetReadFile(hService, pBuf, dwSize, dwBytesRead) then begin InternetCloseHandle(hService); InternetCloseHandle(hSession); exit; end; InternetCloseHandle(hService); end else begin InternetCloseHandle(hSession); exit end; InternetCloseHandle(hSession); end else exit; result:=true; end; {-----------------------------------} function GetRealIp():string; var buf:array[0..4096]of char; s,ip:string; i1,i2:integer; begin result:=''; if not DownloadURL('http://www.cmyip.com/',@buf,sizeof(buf)) then exit; s := string(pChar(@buf)); i1:= pos('My IP is ',s) + 10; i2:= pos(' - Quick and Easy way to SEE my IP address - CmyIP.com',s); result:=copy(s,i1,i2-i1); end; BEGIN writeln(GetRealIp()); END. вот это должно сработать. Турбо паскалем ты это точно не откомпилишь)) бери делфи или фри паскаль http://freepascal.org/download.var
смотри мой пост на предыдущей странице https://forum.antichat.ru/showpost.php?p=938023&postcount=2310 там функция DownloadURL закачивает страничку с сайта. Я догадываюсь что тебе как бы нужен метод POST, для этого вместо InternetOpenUrl используй HttpOpenRequest пример которого есть тут: https://forum.antichat.ru/showpost.php?p=937359&postcount=2
Тебе не кажется, что твой код - это забивание гвоздей КУВАЛДОЙ ))) А что делать, если сайты с которых вы пытаетесь получить IP недоступны в данное время ) Думаю этот код намного юзабельней и лучше: http://delphi-faq.zoxt.net/z3.htm
не кажется. так вы узнаете IP-адреса всех сетевых интерфейсов, которые могут не иметь никакого отношения к твоему IP в интернете. в большинстве случаев IP пользовательского компа можно узнать только вот так забивая гвозди кувалдой... Погугли по теме Network Address Translation
Я за работу с сетью и сетевыми протоколами деньги получаю ) Не учи плиз. Все локальные IP сразу можно отбросить: 127.*, 192.*, 10.*, 172.* Оставшийся адрес и есть внешний.
внешнего там может и не быть. Ведь суть NAT как раз в том, что вместо IP твоего компа подставляется IP шлюза. Причем где этот шлюз твой компьютер может не знать в принципе. И внешний адрес этого шлюза достоверно можно узнать ТОЛЬКО тем способом, код к которому я выложил. P.S. а все-таки у меня длиннее))
Если нет внешнего IP, значит компьютер не имеет прямого подключения к интернету (т.е. подключен через другой компьютер). И значит найденнный по вашей технологии IP будет не IP адресом конечного компьютера в сети, а лишь IP его роутера. А нафиг нужен IP роутера, если через него связаться с компьютером все равно нельзя (можно, если прокинуть порты, но все равно в итоге программе при таком способе прокидывания внешний IP знать уже не надо)? Оффтоп у нас получается ) В общем какой итог: Если нужен внешний IP вашего компа - юзайте мой способ. Если нужен внешний IP вашей внутренней сети, то способ bons'a
Для кого писал? http://forum.antichat.ru/showpost.php?p=788789&postcount=12 здесь показано на сокетах.
De-visible не знаю точно для кого писал и еще посоветуйте книгу по сокетам (чтобы было не трудно разжевывать)
De-visible я говорю чтобы было легко читать и разжевывать а не то что тебе попало в поиске (читай внимательнее)
Я дал то, что читал сам, что для тебя легче я не знаю, и прежде чем ТАК спрашивать(попрашайничать) мог сам поискать. Я тебе дал пример дал мануал, так, что вперед и с песней.
http://forum.inattack.ru/index.php?showtopic=10798&st=0&gopid=97474& http://forum.antichat.ru/threadnav79518-1-10.html глаза опусти и увидишь,поиск по сайту еще советаю,много таких тем было
Всем привет, помогите плиз.... нужен код на делфи что бы при нажатии на клавишу программа выводила на печать через принтер из текстового окна, в нете искал ниче похожего не нашел((