Arkadaşlar Bende server ve client ile yapılmışbasit bi chat kodları var bu kdolarla sadece 1 client ile mesajlaşılabiliyor 1, sorum nasıl bunu 2,3 çıkartabilirim 2, sorum ise bu chat sadece kendi pcm üzerinde çalışıor sanki forumlar arası bilgi aluşverişi yapıyormuşcasına ben bunu bir lan ağında birkaç pcnin aynı anda kullanmasını istiyorum
server kodu ;
client kodları ;
Şimdiden yardım eden herkese teşekkürler ..
server kodu ;
Kod:
using System;
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.Sockets;
using System.Threading;
using System.Net;
using System.IO;
namespace Sunucu
{
public partial class Form1 : Form
{
//Gerekli Siniflarin Nesneleri tanimlaniyor
Thread t;
IPAddress ipadresimiz;
TcpListener dinle;
Socket soket;
NetworkStream ag;
StreamReader oku;
StreamWriter yaz;
public delegate **** ricdegis(string text);
public Form1()
{
InitializeComponent();
}
// Serverde Method_1
public **** okumayabasla()
{
soket = dinle.AcceptSocket();
ag = new NetworkStream(soket);
oku = new StreamReader(ag);
while (true)
{
try
{
string yazi = oku.ReadLine();
ekranabas(yazi);
}
catch
{
return;
}
}
}
// Serverde Method_2 (Gelen Veriyi richTextBox icine yazdirmak icin)
public **** ekranabas(string s)
{
if (this.InvokeRequired)
{
ricdegis degis = new ricdegis(ekranabas);
this.Invoke(degis, s);
}
else
{
s = "Server: " + s;
richTextBox1.AppendText(s + "\n");
}
}
// Serverde Method_3 (Serverimizin Port dinlemesine baslamsi icin)
private **** dinlemeye_basla()
{
try
{
ipadresimiz = IPAddress.Parse("127.0.0.1");
dinle = new TcpListener(ipadresimiz, Convert.ToInt16(textBox1.Text));
dinle.Start();
t = new Thread(new ThreadStart(okumayabasla));
t.Start();
richTextBox1.AppendText(DateTime.Now.ToString() + " Dinleme baslatildi...\n");
}
catch (Exception)
{
MessageBox.Show("Dinleme baslatilamadi");
}
}
private **** Form1_Load(object sender, EventArgs e)
{
}
private **** button1_Click(object sender, EventArgs e)
{
dinlemeye_basla();
}
private **** button3_Click(object sender, EventArgs e)
{
if (textBox2.Text == "")
//Burda bos alan göndermeyi önlüyoruz...
return;
else
{
yaz = new StreamWriter(ag);
yaz.WriteLine(textBox2.Text);
yaz.Flush();
richTextBox1.AppendText(textBox2.Text + "\n");
textBox2.Text = "";
}
}
private **** button2_Click(object sender, EventArgs e)
{
dinle.Stop();
}
}
}
Kod:
using System;
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.Sockets;
using System.Threading;
using System.IO;
namespace Client
{
public partial class Form1 : Form
{ //Yine gerekli Siniflarin nesneleri tanimlaniyor
Thread t;
TcpClient baglantikur;
NetworkStream ag;
StreamReader oku;
StreamWriter yaz;
public delegate **** ricdegis(string text);
public Form1()
{
InitializeComponent();
}
// Clintde Method_1 (Gelen veri okunuyor)
public **** okumayabasla()
{
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 **** ekranabas(string s)
{
if (this.InvokeRequired)
{
ricdegis degis = new ricdegis(ekranabas);
this.Invoke(degis, s);
}
else
{
s = "Client: " + s;
richTextBox1.AppendText(s + "\n");
}
}
// Clientde Method_3 (Istenilen IP'ye istenen Port üzerinden baglaniliyor)
public **** baglanti_kur()
{
try
{
//Ben Lochalhos üzerinde deneme yapacagim icin 127.0.0.1 verdim
baglantikur = new TcpClient("127.0.0.1", Convert.ToInt16(textBox1.Text));
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 **** Form1_Load(object sender, EventArgs e)
{
}
private **** button1_Click(object sender, EventArgs e)
{
baglanti_kur();
}
private **** button3_Click(object sender, EventArgs e)
{
if (textBox3.Text == "")
//Burda bos alan göndermeyi önlüyoruz...
return;
else
{
yaz = new StreamWriter(ag);
yaz.WriteLine(textBox3.Text);
yaz.Flush();
richTextBox1.AppendText(textBox3.Text + "\n");
textBox2.Text = "";
}
}
private **** button2_Click(object sender, EventArgs e)
{
baglantikur.Client.Close();
}
}
}
Son düzenleme:
