C# Form listbox sorunu

ScriptKid

Katılımcı Üye
5 Şub 2022
615
91
Merhaba ben c# formda yazdığım programı başkası çalıştırıyor ise benim listboxımda onun ip adresi onun listboxında benim ip adresim görünmesini istiyorum fakat 1 haftadır uğraşamama rağmen internetten bunu nasıl yapabileceğimi öğrenemedim, projemde herhangi bir server client sistemi istemiyorum

Cevap yazanlara şimdiden teşekkür ederim
 

tamam ağa

Uzman üye
7 Haz 2023
1,533
876
Merhaba ben c# formda yazdığım programı başkası çalıştırıyor ise benim listboxımda onun ip adresi onun listboxında benim ip adresim görünmesini istiyorum fakat 1 haftadır uğraşamama rağmen internetten bunu nasıl yapabileceğimi öğrenemedim, projemde herhangi bir server client sistemi istemiyorum

Cevap yazanlara şimdiden teşekkür ederim
kendi bilgisayarının benzersiz özelliklerini belirlemen lazım.
misal mac adresi,anakart seri numarası vb.
devamında buna göre kontroller yapıp ip adresini verebilirsin diye düşünüyorum.
karşı tarafın ip adresini sql sunucu ile alırsın.
 

ScriptKid

Katılımcı Üye
5 Şub 2022
615
91
kendi bilgisayarının benzersiz özelliklerini belirlemen lazım.
misal mac adresi,anakart seri numarası vb.
devamında buna göre kontroller yapıp ip adresini verebilirsin diye düşünüyorum.
karşı tarafın ip adresini sql sunucu ile alırsın.

Projemin kodları aşağıda bunun üzerinden anlatır mısın


C#:
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using System.Drawing;
using System.Collections.Concurrent;
using System.Linq;
using System.Threading.Tasks;

namespace ChatApp
{


    public partial class Form1 : Form
    {
        private UdpClient udpClient;
        private Thread listenThread;
        private bool isConnected = false;
        private string myName;
        private List<string> connectedIPs;
        private NotifyIcon notifyIcon;

        public Form1()
        {
            InitializeComponent();
            InitializeNotifyIcon();
            connectedIPs = new List<string>();
            this.AcceptButton = mesaj_gonder_button; // Klavyede Enter tuşuna basılınca button1'e basılma işlemini gerçekleştirir.
        }

        private void InitializeNotifyIcon()
        {
            notifyIcon = new NotifyIcon();
            notifyIcon.Icon = SystemIcons.Information;
            notifyIcon.Text = "ChatApp";
            notifyIcon.Visible = true;
            notifyIcon.BalloonTipClicked += NotifyIcon_BalloonTipClicked;

            // Bildirime tıklandığında açılacak olan formu belirleyin
            notifyIcon.DoubleClick += NotifyIcon_Double_Click;
        }

        private void NotifyIcon_Double_Click(object sender, EventArgs e)
        {
            // NotifyIcon'a tıklandığında Form'u tekrar açarız.
            this.Show();
        }

        private void NotifyIcon_BalloonTipClicked(object sender, EventArgs e)
        {
            // Baloncuk bildirime tıklandığında yapılacak işlemleri burada belirtebilirsiniz.
            // Bu örnekte herhangi bir işlem yapmıyoruz.
            this.Show();
        }

        private void Form1_Load_1(object sender, EventArgs e)
        {
            checkBox1.Checked = true;

            string bilgisayarAdi = Dns.GetHostName();
            bilgisayar_label.Text = "Bilgisayar Adı: " + bilgisayarAdi;


            // Wi-Fi bağlantısı olan bir ağ arıyoruz.
            NetworkInterface wifiInterface = null;
            foreach (NetworkInterface networkInterface in NetworkInterface.GetAllNetworkInterfaces())
            {
                if (networkInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 &&
                    networkInterface.OperationalStatus == OperationalStatus.Up)
                {
                    wifiInterface = networkInterface;
                    break;
                }
            }

            if (wifiInterface != null)
            {
                // Wi-Fi arabirimine atanan IPv4 adresini alıyoruz.
                foreach (UnicastIPAddressInformation ip in wifiInterface.GetIPProperties().UnicastAddresses)
                {
                    if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
                    {
                        ip_bilgisi.Text = ip.Address.ToString();
                        ip_label.Text = "Wi-Fi IPv4 Adresi: " + ip.Address.ToString();
                        FindIPAddressesAsync();
                        return;
                    }
                }
            }

            // Eğer Wi-Fi bağlantısı yoksa veya IPv4 adresi alınamazsa hata mesajı gösteriyoruz.
            ip_label.Text = "Wi-Fi IPv4 Adresi Bulunamadı.";


        }

        static string kullaniciAdi;
        static int port;

        private void baglan_button_Click(object sender, EventArgs e)
        {
            if (!isConnected)
            {
                try
                {
                    kullaniciAdi = isim_text.Text.Trim(); // Başlangıç ve bitiş boşlukları kaldır

                    if (string.IsNullOrEmpty(kullaniciAdi))
                    {
                        MessageBox.Show("Lütfen İsim Giriniz!");
                        return;
                    }
                    else
                    {
                        // İsim başındaki ve sonundaki boşlukları sil
                        kullaniciAdi = kullaniciAdi.Trim();

                        port = Convert.ToInt32(port_text.Text);
                        udpClient = new UdpClient(port);
                        isConnected = true;
                        myName = kullaniciAdi; // Değişiklik burada yapıldı
                        baglan_button.Text = "Bağlantıyı Kes";

                        listenThread = new Thread(new ThreadStart(ListenForMessages));
                        listenThread.IsBackground = true;
                        listenThread.Start();

                        // KATILMA MESAJI
                        string message = $"{myName} Sohbete Katıldı!";
                        byte[] data = Encoding.UTF8.GetBytes(message);

                        // Diğer cihazın IP adresi ve port numarasını alarak gönderme işlemi yapın.
                        string ipAddress = ip_text.Text;
                        IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse(ipAddress), port);

                        udpClient.Send(data, data.Length, remoteEP);
                        mesajlar_list.Items.Add(message);
                        mesaj_text.Clear();
                        // KATILMA MESAJI SONU

                        // Listbox'ı aşağıya kaydıralım.
                        mesajlar_list.TopIndex = mesajlar_list.Items.Count - 1;

                        ip_text.Enabled = false;
                        port_text.Enabled = false;
                        isim_text.Enabled = false;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Hata: " + ex.Message);
                }
            }

            else
            {
                isConnected = true;
                myName = kullaniciAdi; // Değişiklik burada yapıldı

                // AYRILMA MESAJI
                string message = $"{myName} Sohbetten Ayrıldı!";
                byte[] data = Encoding.UTF8.GetBytes(message);

                // Diğer cihazın IP adresi ve port numarasını alarak gönderme işlemi yapın.
                string ipAddress = ip_text.Text;
                IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse(ipAddress), port);

                udpClient.Send(data, data.Length, remoteEP);
                mesajlar_list.Items.Add(message);
                mesaj_text.Clear();
                // AYRILMA MESAJI SONU

                // Listbox'ı aşağıya kaydıralım.
                mesajlar_list.TopIndex = mesajlar_list.Items.Count - 1;

                isConnected = false;
                udpClient.Close();
                baglan_button.Text = "Bağlan";

                ip_text.Enabled = true;
                port_text.Enabled = true;
                isim_text.Enabled = true;
            }
        }

        private void gonder_button_Click(object sender, EventArgs e)
        {
            if (isConnected)
            {
                try
                {
                    // Eğer mesaj textbox boş değilse mesajı gönder
                    if (!string.IsNullOrWhiteSpace(mesaj_text.Text))
                    {
                        string message = $"{myName}: {mesaj_text.Text}";
                        byte[] data = Encoding.UTF8.GetBytes(message);

                        // Diğer cihazın IP adresi ve port numarasını alarak gönderme işlemi yapın.
                        string ipAddress = ip_text.Text;
                        int port = Convert.ToInt32(port_text.Text);
                        IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse(ipAddress), port);

                        udpClient.Send(data, data.Length, remoteEP);
                        mesajlar_list.Items.Add(message);
                        mesaj_text.Clear();

                        // Listbox'ı aşağıya kaydıralım.
                        mesajlar_list.TopIndex = mesajlar_list.Items.Count - 1;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Hata: " + ex.Message);
                }
            }
            else
            {
                MessageBox.Show("Bağlantı yok!");
            }
        }


        private void ListenForMessages()
        {
            try
            {
                while (isConnected)
                {
                    IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
                    byte[] data = udpClient.Receive(ref remoteEP);
                    string message = Encoding.UTF8.GetString(data);

                    if (message.Contains("(Dosya gönderme)"))
                    {
                        // Gelen mesaj bir dosya gönderme mesajı ise, dosyayı alın.
                        byte[] fileData = udpClient.Receive(ref remoteEP);

                        // Dosya adını mesajdan alın
                        string fileName = message.Substring(message.IndexOf(":") + 2);

                        // Mesajdan "(Dosya gönderme)" kısmını kaldırın
                        message = message.Replace("(Dosya gönderme)", "").Trim();


                        if (checkBox1.Checked == true)
                        {
                            // Bildirim baloncukta gösterilecek metni ve başlığı ayarlayın.
                            notifyIcon.BalloonTipTitle = "Yeni Dosya!";
                            notifyIcon.BalloonTipText = message;
                            notifyIcon.ShowBalloonTip(3000); // 3 saniye boyunca göster
                        }

                        else
                        {

                        }

                        // Listbox'ı aşağıya kaydıralım.
                        mesajlar_list.TopIndex = mesajlar_list.Items.Count - 1;

                        // Dosyayı kaydedin
                        this.Invoke(new MethodInvoker(() =>
                        {
                            SaveFileDialog saveFileDialog = new SaveFileDialog();
                            saveFileDialog.FileName = fileName;

                            if (saveFileDialog.ShowDialog() == DialogResult.OK)
                            {
                                System.IO.File.WriteAllBytes(saveFileDialog.FileName, fileData);
                            }

                            mesajlar_list.Items.Add(message + " - Alındı");
                        }));
                    }
                    else
                    {
                        // Diğer durumlarda normal mesajı alın.
                        this.Invoke(new MethodInvoker(() =>
                        {
                            mesajlar_list.Items.Add(message);

                            if (checkBox1.Checked)
                            {
                                // Bildirim baloncukta gösterilecek metni ve başlığı ayarlayın.
                                notifyIcon.BalloonTipTitle = "Yeni Mesaj!";
                                notifyIcon.BalloonTipText = message;
                                notifyIcon.ShowBalloonTip(3000); // 3 saniye boyunca göster
                            }

                            // Listbox'ı aşağıya kaydıralım.
                            mesajlar_list.TopIndex = mesajlar_list.Items.Count - 1;
                        }));
                    }
                }
            }
            catch (SocketException)
            {
                // Soket kapatıldı, dinleme sona erdi.
            }
        }



        private async void FindIPAddressesAsync()
        {
            Ping P = new Ping();

            int a = 100;
            int b = 255;

            int online = 0;
            online_label.Text = "Online: " + online.ToString();

            string ip_ilgisi = ip_bilgisi.Text.Substring(0, ip_bilgisi.Text.LastIndexOf('.'));

            // Listeyi temizleyin, böylece her tetiklendiğinde önceki IP adreslerini kaldırmış olursunuz.
            cihazlar_list.Items.Clear();

            for (int i = a; i <= b; i++)
            {
                string sonuc = ip_ilgisi + "." + i.ToString();
                IPAddress my = IPAddress.Parse(sonuc);

                try
                {
                    PingReply cevap = await P.SendPingAsync(my);

                    if (cevap.Status == IPStatus.Success)
                    {
                        cihazlar_list.Items.Add(sonuc);
                        online++;
                        online_label.Text = "Online: " + online.ToString();
                    }
                    else
                    {
                        cihazlar_list.Items.Add("-------");
                        online_label.Text = "Online: " + online.ToString();
                    }
                }
                catch (Exception ex)
                {
                    cihazlar_list.Items.Add("Hata: " + ex.Message);
                }
            }
        }

        private void yenile_button_Click(object sender, EventArgs e)
        {
            FindIPAddressesAsync();
        }



        private void dosya_gonder_buton_Click(object sender, EventArgs e)
        {
            if (isConnected)
            {
                try
                {
                    OpenFileDialog openFileDialog = new OpenFileDialog();
                    if (openFileDialog.ShowDialog() == DialogResult.OK)
                    {
                        string filePath = openFileDialog.FileName;
                        byte[] fileData = System.IO.File.ReadAllBytes(filePath);

                        // Dosyanın adını alarak gönderme işlemini yapın.
                        string fileName = System.IO.Path.GetFileName(filePath);
                        string message = $"{myName}: (Dosya gönderme) {fileName}";
                        byte[] messageData = Encoding.UTF8.GetBytes(message);

                        string ipAddress = ip_text.Text;
                        int port = Convert.ToInt32(port_text.Text);
                        IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse(ipAddress), port);

                        // Önce mesajı gönderin
                        udpClient.Send(messageData, messageData.Length, remoteEP);

                        // Ardından dosyayı gönderin
                        udpClient.Send(fileData, fileData.Length, remoteEP);

                        mesajlar_list.Items.Add(message);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Hata: " + ex.Message);
                }
            }
            else
            {
                MessageBox.Show("Bağlantı yok!");
            }
        }



        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true; // Form kapatmayı iptal eder
            this.Hide(); // Formu gizler
        }

        private void isim_text_Validating(object sender, System.ComponentModel.CancelEventArgs e)
        {
            
        }

        private void isim_text_TextChanged(object sender, EventArgs e)
        {
            karakter_sayisi_label.Visible = true;

            // İsim_text TextBox'ındaki metni alın ve toplam karakter sayısını hesaplayın.
            string text = isim_text.Text;
            int characterCount = text.Length;

            if (characterCount > 20)
            {
                // Eğer 20 karakterden fazlaysa, fazla karakterleri silerek 20 karaktere düşürün.
                isim_text.Text = text.Substring(0, 20);
                karakter_sayisi_label.Text = "20/20";
            }
            else
            {
                // Toplam karakter sayısını bir Label'a yazdırın.
                karakter_sayisi_label.Text = characterCount + "/20";
            }
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
            {
                checkBox1.Text = "Bildirimler Açık!";
            }

            else
            {
                checkBox1.Text = "Bildirimler Kapalı!";
            }
        }
    }
}
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.