mammad_asir
پنج شنبه 03 آذر 1390, 15:24 عصر
در این برنامه میخوام چند تا کلاینت بتونه همزمان به سرور کانکت بشه و کلاینت ها پیامی رو برای سرور بفرستند و سرور هم جواب را برای همان کلاینت بفرسته یعنی حواب برای همه نره. واینکه میخواستم در ترید به richtextbox دسترسی داشته باشم که نشد چطور میشه؟
برنامه سمت سرور
namespace ts1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// string sBuffer;
int i = 0;
Socket[] mysocet = new Socket[10];
private TcpListener myListener;
private int port = 2020;
private void button1_Click(object sender, EventArgs e)
{
try
{
//گوش ایستادن روی پورت
myListener = new TcpListener(port);
myListener.Start();
Console.WriteLine("Web Server Running...... Press ^C to Stop......");
// استفاده از چند نخی برای پاسخ به چند پردازش همزمان
// Thread th = new Thread(new ThreadStart(StartListen));
// th.Start();
Thread th1 = new Thread(acp);
th1.Start();
}
catch (Exception)
{
Console.WriteLine("an err occured :" + e.ToString());
}
}
public void acp()
{
while (i<10)
{
//Accept a new connection
mysocet [i]= myListener.AcceptSocket();
if (i == 0)
{
Thread th = new Thread(new ThreadStart(StartListen));
th.Start();
}
else
{
if (!mysocet[i - 1].Connected)
{
Thread th = new Thread(new ThreadStart(StartListen));
th.Start();
}
}
i++;
}
}
public void StartListen()
{
while (true)
{
if (i == 1)
i--;
//Accept a new connection
// Socket mySocket = myListener.AcceptSocket();
// Console.WriteLine("Socket Type " + mySocket.SocketType);
if (mysocet [i].Connected)
{
// Console.WriteLine("\nClient Connected!!\n==================\nCLient IP {0}\n",
// mySocket.RemoteEndPoint);
//make a byte array and receive data from the client
Byte[] bReceive = new Byte[1024];
//int j =
mysocet[i].Receive(bReceive);
//Convert Byte to String
string sBuffer = Encoding.ASCII.GetString(bReceive);
// MessageBox.Show(sBuffer);
// richTextBox1.Text += sBuffer;
MessageBox.Show(sBuffer);
mysocet[i].Send(bReceive);
}
}
mysocet[i].Close();
}
private void button2_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
برنامه سمت سرور
namespace ts1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// string sBuffer;
int i = 0;
Socket[] mysocet = new Socket[10];
private TcpListener myListener;
private int port = 2020;
private void button1_Click(object sender, EventArgs e)
{
try
{
//گوش ایستادن روی پورت
myListener = new TcpListener(port);
myListener.Start();
Console.WriteLine("Web Server Running...... Press ^C to Stop......");
// استفاده از چند نخی برای پاسخ به چند پردازش همزمان
// Thread th = new Thread(new ThreadStart(StartListen));
// th.Start();
Thread th1 = new Thread(acp);
th1.Start();
}
catch (Exception)
{
Console.WriteLine("an err occured :" + e.ToString());
}
}
public void acp()
{
while (i<10)
{
//Accept a new connection
mysocet [i]= myListener.AcceptSocket();
if (i == 0)
{
Thread th = new Thread(new ThreadStart(StartListen));
th.Start();
}
else
{
if (!mysocet[i - 1].Connected)
{
Thread th = new Thread(new ThreadStart(StartListen));
th.Start();
}
}
i++;
}
}
public void StartListen()
{
while (true)
{
if (i == 1)
i--;
//Accept a new connection
// Socket mySocket = myListener.AcceptSocket();
// Console.WriteLine("Socket Type " + mySocket.SocketType);
if (mysocet [i].Connected)
{
// Console.WriteLine("\nClient Connected!!\n==================\nCLient IP {0}\n",
// mySocket.RemoteEndPoint);
//make a byte array and receive data from the client
Byte[] bReceive = new Byte[1024];
//int j =
mysocet[i].Receive(bReceive);
//Convert Byte to String
string sBuffer = Encoding.ASCII.GetString(bReceive);
// MessageBox.Show(sBuffer);
// richTextBox1.Text += sBuffer;
MessageBox.Show(sBuffer);
mysocet[i].Send(bReceive);
}
}
mysocet[i].Close();
}
private void button2_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}