1-) C# - multi client (eğer client mesajı gonderemesse tekrar başlat düğmesine bas)
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace server
{
public partial class Form1 : Form
{
Thread t;
IPAddress ipadresimiz;
TcpListener dinle;
// Socket soket;
//NetworkStream ag;
// StreamReader oku;
// StreamWriter yaz;
public delegate void ricdegis(string text);
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
if (textBox2.Text == "")
//Burda bos alan göndermeyi önlüyoruz...
return;
else
{
for (int i = 0; i < listem.Count; i++)
{
Console.WriteLine("gönder sayi " + i);
StreamWriter yaz = new StreamWriter(listem[i]);//ag = kabul edilen client idi
yaz.WriteLine(textBox2.Text);//ag'a veri gonderiyoruz
yaz.Flush();//bağlanan cliente veriyi gonderdık
}
richTextBox1.AppendText(textBox2.Text + "\n");
textBox2.Text = "";
}
}
//public void ramazan1()//bunu yazmassam 2.client baglanamıyor nedenini
//{
// //buradakileri list<> şeklinde yap hepsını
// //ag1 e mesaj gonder bakalım
// while (true)
// {
// Console.WriteLine("dinliyorum");
// Socket soket1 = dinle.AcceptSocket();
// NetworkStream ag1 = new NetworkStream(soket1);
// listem.Add(ag1);
// StreamReader oku1 = new StreamReader(ag1);
// while (true)
// {
// try
// {
// string yazi1 = oku1.ReadLine();
// ekranabas(yazi1);
// }
// catch
// {
// return;
// }
// }
// }
//}
public void ekranabas(string s)
{
if (this.InvokeRequired)//olmasada olur daha sonra kaldıracam
{
ricdegis degis = new ricdegis(ekranabas);//olmasada olur daha sonra kaldıracam
this.Invoke(degis, s);//olmasada olur daha sonra kaldıracam
}
else
{
s = "Server: " + s;
richTextBox1.AppendText(s + "n");//yazıları textboxa yazıyor
}
}
List<NetworkStream> listem = new List<NetworkStream>();//ben
static int client_sayisi = 0;
public void yaz()
{
while (true)
{
try
{
string yazi = oku.ReadLine();//soketten gelen yazıları okuyor
ekranabas(yazi);
Console.WriteLine("sonsuz buradamı");
}
catch
{
return;
}
}
}
StreamReader oku;
NetworkStream ag;
Socket soket;
public void okumayabasla()
{
while (true)
{
client_sayisi++;
Console.WriteLine("client sayisi = " + client_sayisi);
soket = dinle.AcceptSocket();//soketi kabul etti
ag = new NetworkStream(soket);//kabul edilen soketten veri almak için
listem.Add(ag);//ben
Console.WriteLine("listeye 1 client eklendi");
for (int i = 0; i < listem.Count; i++)
{
Console.WriteLine("sayi = " + i);
oku = new StreamReader(listem[i]);//kabul edilen soketten veri almak için
Thread s = new Thread(yaz);
s.Start();
//StreamReader sr = new StreamReader(listem[i]);
//richTextBox1.AppendText(sr.ReadToEnd());//hepsini yazar
}
}
}
public void dinlemeye_basla()
{
try
{
ipadresimiz = IPAddress.Parse("127.0.0.1");
dinle = new TcpListener(ipadresimiz, Convert.ToInt16(textBox1.Text));
dinle.Start();//dinlemeye başlıyor
t = new Thread(new ThreadStart(okumayabasla));
t.Start();
richTextBox1.AppendText(DateTime.Now.ToString() + " Dinleme baslatildi...n");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
MessageBox.Show("Dinleme baslatilamadi");
}
}
private void button1_Click_1(object sender, EventArgs e)
{
System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;
Thread t2 = new Thread(new ThreadStart(dinlemeye_basla));
t2.Start();
}
private void button2_Click_1(object sender, EventArgs e)
{
//ag.Close();
}
}
}
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace client
{
public partial class Form1 : Form
{
//Yine gerekli Siniflarin nesneleri tanimlaniyor
Thread t;
TcpClient baglantikur;
NetworkStream ag;
StreamReader oku;
StreamWriter yaz;
public delegate void ricdegis(string text);
public Form1()
{
InitializeComponent();
}
public void ramazan()
{
Thread t2 = new Thread(ramazan);
t2.Start();
ag = baglantikur.GetStream();
oku = new StreamReader(ag);
while (true)
{
try
{
string yazi = oku.ReadLine();
ekranabas(yazi);
}
catch
{
return;
}
}
}
// Clientde Method_2 (Okunan Veri richTextBox icine yaziliyor)
public void ekranabas(string s)//gelen yaziları ekrana yazar
{
if (this.InvokeRequired)
{
ricdegis degis = new ricdegis(ekranabas);
this.Invoke(degis, s);
}
else
{
s = "Client: " + s;
richTextBox1.AppendText(s + "n");
}
}
// Clintde Method_1 (Gelen veri okunuyor)
public void okumayabasla()
{
ag = baglantikur.GetStream();//NetworkStream ag tipinde..baglantikur ise TcpClient tipinde GetStream ise tcp leri getiriyor
// porta gelen verileri dinliyor
oku = new StreamReader(ag);//gelen verileri yazmak için
while (true)//gelen yazi bitisiye kadar döner
{
try
{
string yazi = oku.ReadLine();
ekranabas(yazi);//gelen yaziları ekrana yazar
}
catch
{
return;
}
}
}
// Clientde Method_3 (Istenilen IP'ye istenen Port üzerinden baglaniliyor)
public void baglanti_kur()
{
try
{
//Ben Lochalhos üzerinde deneme yapacagim icin 127.0.0.1 verdim portlar aynı olacak server ile
baglantikur = new TcpClient("127.0.0.1", Convert.ToInt16(textBox1.Text));//burada tcpclient ile bağlanıcaz
t = new Thread(new ThreadStart(okumayabasla));
t.Start();
richTextBox1.AppendText(DateTime.Now.ToString() + " Baglanti kuruldu...n");
}
catch (Exception)
{
MessageBox.Show("Server ile baglanti kurulurken hata olustu !");
}
}
private void button1_Click(object sender, EventArgs e)
{
System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;
Thread t3 = new Thread(baglanti_kur);
t3.Start();
}
private void button3_Click(object sender, EventArgs e)
{
baglantikur.Client.Close();
}
private void button3_Click_1(object sender, EventArgs e)
{
if (textBox2.Text == "")
//Burda bos alan göndermeyi önlüyoruz...
return;
else
{
yaz = new StreamWriter(ag);//ag da ip ve port wardı...baglantikur ile aktarmıştık içine
yaz.WriteLine(textBox2.Text);
yaz.Flush();//geri değer döndurmek için
richTextBox1.AppendText(textBox2.Text + "n");
textBox2.Text = "";
}
}
private void button2_Click_1(object sender, EventArgs e)
{
baglantikur.Client.Close();
}
}
}
2-)client.cs
1-)server.cs
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace server
{
public partial class Form1 : Form
{
Thread t;
IPAddress ipadresimiz;
TcpListener dinle;
// Socket soket;
//NetworkStream ag;
// StreamReader oku;
// StreamWriter yaz;
public delegate void ricdegis(string text);
public Form1()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
if (textBox2.Text == "")
//Burda bos alan göndermeyi önlüyoruz...
return;
else
{
for (int i = 0; i < listem.Count; i++)
{
Console.WriteLine("gönder sayi " + i);
StreamWriter yaz = new StreamWriter(listem[i]);//ag = kabul edilen client idi
yaz.WriteLine(textBox2.Text);//ag'a veri gonderiyoruz
yaz.Flush();//bağlanan cliente veriyi gonderdık
}
richTextBox1.AppendText(textBox2.Text + "\n");
textBox2.Text = "";
}
}
//public void ramazan1()//bunu yazmassam 2.client baglanamıyor nedenini
//{
// //buradakileri list<> şeklinde yap hepsını
// //ag1 e mesaj gonder bakalım
// while (true)
// {
// Console.WriteLine("dinliyorum");
// Socket soket1 = dinle.AcceptSocket();
// NetworkStream ag1 = new NetworkStream(soket1);
// listem.Add(ag1);
// StreamReader oku1 = new StreamReader(ag1);
// while (true)
// {
// try
// {
// string yazi1 = oku1.ReadLine();
// ekranabas(yazi1);
// }
// catch
// {
// return;
// }
// }
// }
//}
public void ekranabas(string s)
{
if (this.InvokeRequired)//olmasada olur daha sonra kaldıracam
{
ricdegis degis = new ricdegis(ekranabas);//olmasada olur daha sonra kaldıracam
this.Invoke(degis, s);//olmasada olur daha sonra kaldıracam
}
else
{
s = "Server: " + s;
richTextBox1.AppendText(s + "n");//yazıları textboxa yazıyor
}
}
List<NetworkStream> listem = new List<NetworkStream>();//ben
static int client_sayisi = 0;
public void yaz()
{
while (true)
{
try
{
string yazi = oku.ReadLine();//soketten gelen yazıları okuyor
ekranabas(yazi);
Console.WriteLine("sonsuz buradamı");
}
catch
{
return;
}
}
}
StreamReader oku;
NetworkStream ag;
Socket soket;
public void okumayabasla()
{
while (true)
{
client_sayisi++;
Console.WriteLine("client sayisi = " + client_sayisi);
soket = dinle.AcceptSocket();//soketi kabul etti
ag = new NetworkStream(soket);//kabul edilen soketten veri almak için
listem.Add(ag);//ben
Console.WriteLine("listeye 1 client eklendi");
for (int i = 0; i < listem.Count; i++)
{
Console.WriteLine("sayi = " + i);
oku = new StreamReader(listem[i]);//kabul edilen soketten veri almak için
Thread s = new Thread(yaz);
s.Start();
//StreamReader sr = new StreamReader(listem[i]);
//richTextBox1.AppendText(sr.ReadToEnd());//hepsini yazar
}
}
}
public void dinlemeye_basla()
{
try
{
ipadresimiz = IPAddress.Parse("127.0.0.1");
dinle = new TcpListener(ipadresimiz, Convert.ToInt16(textBox1.Text));
dinle.Start();//dinlemeye başlıyor
t = new Thread(new ThreadStart(okumayabasla));
t.Start();
richTextBox1.AppendText(DateTime.Now.ToString() + " Dinleme baslatildi...n");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
MessageBox.Show("Dinleme baslatilamadi");
}
}
private void button1_Click_1(object sender, EventArgs e)
{
System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;
Thread t2 = new Thread(new ThreadStart(dinlemeye_basla));
t2.Start();
}
private void button2_Click_1(object sender, EventArgs e)
{
//ag.Close();
}
}
}
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace client
{
public partial class Form1 : Form
{
//Yine gerekli Siniflarin nesneleri tanimlaniyor
Thread t;
TcpClient baglantikur;
NetworkStream ag;
StreamReader oku;
StreamWriter yaz;
public delegate void ricdegis(string text);
public Form1()
{
InitializeComponent();
}
public void ramazan()
{
Thread t2 = new Thread(ramazan);
t2.Start();
ag = baglantikur.GetStream();
oku = new StreamReader(ag);
while (true)
{
try
{
string yazi = oku.ReadLine();
ekranabas(yazi);
}
catch
{
return;
}
}
}
// Clientde Method_2 (Okunan Veri richTextBox icine yaziliyor)
public void ekranabas(string s)//gelen yaziları ekrana yazar
{
if (this.InvokeRequired)
{
ricdegis degis = new ricdegis(ekranabas);
this.Invoke(degis, s);
}
else
{
s = "Client: " + s;
richTextBox1.AppendText(s + "n");
}
}
// Clintde Method_1 (Gelen veri okunuyor)
public void okumayabasla()
{
ag = baglantikur.GetStream();//NetworkStream ag tipinde..baglantikur ise TcpClient tipinde GetStream ise tcp leri getiriyor
// porta gelen verileri dinliyor
oku = new StreamReader(ag);//gelen verileri yazmak için
while (true)//gelen yazi bitisiye kadar döner
{
try
{
string yazi = oku.ReadLine();
ekranabas(yazi);//gelen yaziları ekrana yazar
}
catch
{
return;
}
}
}
// Clientde Method_3 (Istenilen IP'ye istenen Port üzerinden baglaniliyor)
public void baglanti_kur()
{
try
{
//Ben Lochalhos üzerinde deneme yapacagim icin 127.0.0.1 verdim portlar aynı olacak server ile
baglantikur = new TcpClient("127.0.0.1", Convert.ToInt16(textBox1.Text));//burada tcpclient ile bağlanıcaz
t = new Thread(new ThreadStart(okumayabasla));
t.Start();
richTextBox1.AppendText(DateTime.Now.ToString() + " Baglanti kuruldu...n");
}
catch (Exception)
{
MessageBox.Show("Server ile baglanti kurulurken hata olustu !");
}
}
private void button1_Click(object sender, EventArgs e)
{
System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;
Thread t3 = new Thread(baglanti_kur);
t3.Start();
}
private void button3_Click(object sender, EventArgs e)
{
baglantikur.Client.Close();
}
private void button3_Click_1(object sender, EventArgs e)
{
if (textBox2.Text == "")
//Burda bos alan göndermeyi önlüyoruz...
return;
else
{
yaz = new StreamWriter(ag);//ag da ip ve port wardı...baglantikur ile aktarmıştık içine
yaz.WriteLine(textBox2.Text);
yaz.Flush();//geri değer döndurmek için
richTextBox1.AppendText(textBox2.Text + "n");
textBox2.Text = "";
}
}
private void button2_Click_1(object sender, EventArgs e)
{
baglantikur.Client.Close();
}
}
}
2-)client.cs