Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
C# İle İnternet IP Adresi Alma
#1
Geliştirdiğiniz uygulamada Bilgisayarın internet IP adresini almanız gerekirse aşağıda verdiğim örnekten faydalanabilirsiniz.

Öncelikle IP adresini almak için bir web sayfasına ihtiyacımız var. Örnek olarak bir php sayfası kullanacağız.

Öncelikle programda gerekli tanımlamalar ve yazmış olduğum örnek fonksiyonun kullanımı ile başlayalım;


PHP Kod:
<?php 
using System
.Text;
using System.Net;
using System.IO;


PHP Kod:
<?php 
public string ipAl(string url, string ip_oncesi, string ip_sonrasi, bool varsayilan_proxy_sunucusu_kullanilsin)
{
String kaynak = "";
try {
HttpWebRequest http_istek = (HttpWebRequest) HttpWebRequest.Create(url);
http_istek.Timeout = 60000;
http_istek.UserAgent = "";
http_istek.Method = "GET";
if (
varsayilan_proxy_sunucusu_kullanilsin)
{
IWebProxy proxy = HttpWebRequest.DefaultWebProxy;
proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
http_istek.Proxy = proxy;
}
WebResponse resp = (WebResponse) http_istek.GetResponse();
StreamReader respReader = new StreamReader(resp.GetResponseStream(),Encoding.Default);
   kaynak = respReader.ReadToEnd();
respReader.Close();
}
catch (
Exception e)
{
MessageBox.Show("HTTP Bağlantısı kurulurken hata oluştu : " + e.Message);
return
""; // Kaynak alma sırasında hata oluştu!
}
int ilk_index = kaynak.IndexOf(ip_oncesi);
if (
ilk_index == -1)
{
return
""; // Aranılan metin kaynakta bulunamadı!
}
int bas_index = ilk_index + ip_oncesi.Length;
kaynak = kaynak.Substring(bas_index, kaynak.Length - bas_index );
int son_index = kaynak.IndexOf(ip_sonrasi);
if (
son_index == -1)
{
return
""; // Aranılan metin kaynakta bulunamadı!
}
kaynak = kaynak.Substring(0,son_index);
return
kaynak.Trim();
}

IP adresini almak için kullandığımız fonksiyon 4 adet parametre alıyor,

1) URL (String)  : IP adresini alacağımız sayfanın adresi. Örnek www.turkishcode.com/ip.php
2) IP_ONCESI (String) : İp adresini sayfanın kaynağından parselleyeceğimiz için, ip adresinin sayfa kaynağında tam olarak nereden başladığını belli etmek için kullandığımız parametre. IP adresinin sayfanın kaynağında tam olarak nereden başladığını bulup buradan itibaren kopyalama işlemi yapacağız.
3) IP_SONRASI (String) : ip aderesinin nerede bittiğini belli etmek için kullandığımız parametre değeri.
4) VARSAYILAN_PROXY_SUNUCUSU_KULLANILSIN (Bool) : Eğer kurum yada bir şirket ağından internete erişimimiz varsa direkt olarak o siteye erişim imkanımız bulunmayabilir. HTTP bağlantı işlemini kurum yada şirkete ait proxy sunucusu üzerinden geçirmemiz gerektiği durumlarda bu değişkeni true yaparak buna imkan sağlayıp verileri bilgisayarımızda ayarlı proxy sunucusu üzerinden geçirebiliriz.

Örnek PHP sayfasına ait kod : (ip.php)

PHP Kod:
<?php 
<!DOCTYPE html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>IP Bul</title>
</
head>
<
body>
<
div id="ip_adresi"><?PHP echo $_SERVER['REMOTE_ADDR']; ?></div>
</body>
</html>


Böyle bir sayfanın http://turkishcode.com/ip.php adresinde bulunduğunu varsayarsak ve bu sayfadan IP parsellemek için;

PHP Kod:
<?php 
void Button1Click
(object sender, EventArgs e)
{


String ip = ipAl("http://www.turkishcode.com/ip.php","<div id=\"ip_adresi\">","</div>", true);

if (
ip != "")
{
MessageBox.Show("ip adresiniz :  " + ip);
}
else
{
MessageBox.Show("IP adresi alınamadı!");
}



}

Bu şekilde IP bilgisi veren sitelerden de ip adresi çekebilirsiniz. Fakat site kaynağında sonradan ip kısmının bulunduğu kısım değişikliğe uğrarsa bu ip adresini  almanıza engel olabilir.
Burada dikkat etmemiz gereken husus, ip_adresinin bulunduğu kısmın öncesi ve sonrasını doğru belirleyip fonksiyona parametre olarak göndermek.

* Programlarda IP bilgisini güvenlik için kullanmanızı kesinlikle önermem. Daha doğrusu gelen ip bilgisine tamamen güvenip hareket etmenizi önermem. Çünkü ağ üzerinden gelen giden verilerde oynama yapılabilmesi olası bir durum olup bunu yapan programlar bulunmaktadır. Yani siz programınızda gerçek ip adresini beklerken sahte responder ile farklı bir ip adresi gönderilebilir.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  c# nesnenin görüntüsünü alma Administrator 0 3,728 29-06-2017, 14:39
Son Yorum: Administrator
  C# önemli dizin yollarını alma Administrator 0 3,596 21-11-2015, 14:26
Son Yorum: Administrator
  C# ile Başlayan ve Sonlandırılan İşlemleri Alma [ Process hook ] Administrator 2 20,492 20-11-2015, 22:42
Son Yorum: Administrator

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi