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ı!";
}
}
}
}
Kod ChatGPT kokuyor.projemin kodları aşağıda bunun üzeirnden analatı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ı!"; } } } }
Connection var, broadcast ve UDP protokolü kullanıyor.
Mesajlaşma uygulamasında neden UDP?UDP protokolü kullanıyor.
Şimdi, şöyle yapabilirsin:
Ya bir sunucu yaparsın IP adresi sabit olur, tek görevi açık Client'lerin listesini almak ve biri sorduğunda söylemek olur.
Ya da şöyle de yapabilirsin:
Client'in tarayacağı IP aralığı sabit olur, örneğin yerel ağ için 192.168.1.1'den 254'e kadar tarar. Taraması için programa sabit bir port verirsin, atıyorum 666 portu, 666 portuna whatareyou dendiğinde iamchatapp-ver2 falan döndüğünde anlarsın ki o IP'deki portu dinleyen program senin program ve IP'yi yazdırırsın.
Daha da farklı bir yolu varsa da ben bilmiyorum.
Kod ChatGPT kokuyor.
Mesajlaşma uygulamasında neden UDP?
Bunu da sor, yapsın o halde. Ya da GPT'siz kendi kodunu yaz.Client'in tarayacağı IP aralığı sabit olur, örneğin yerel ağ için 192.168.1.1'den 254'e kadar tarar. Taraması için programa sabit bir port verirsin, atıyorum 666 portu, 666 portuna whatareyou dendiğinde iamchatapp-ver2 falan döndüğünde anlarsın ki o IP'deki portu dinleyen program senin program ve IP'yi yazdırırsın.
Bunu da sor, yapsın o halde. Ya da GPT'siz kendi kodunu yaz.
Emeğin sana ait olmadıkça yaptığına elimi sürmem. Kusura bakma.
?Umarım forumda birisi yardımcı olur o halde.
Takıldığın yerleri de kendin aşmanı öneririm.ChatGPT çıkmadan önce, 6 saat kod yazar 2 saat Debug yapılırdı.
ChatGPT geldi mertlik bozuldu. 2 saat kod yazılıyor 3 gün Debug.