PDA

View Full Version : (socket programing) اتصال چند کلاینت به یک سرور



silverman_200
یک شنبه 26 مهر 1388, 10:58 صبح
سلام دوستان یه برنامه دارم که 2 نسخه کلاینت و سرور داره و سرور روی یکی از سیستمها قرار داره و نسخه کلاینت (چند کلاینت)که باید روی بقیه سیستمها نصب بشه و طلاعاتی رو برای سرور بفرستن ، سورس این برنامه رو دارم ولی همزمان فقط یکی از کلاینت ها میتونه به سرور وصل بشه، کسی میتونه منو در این برنامه راهنمایی کنه؟؟
سورس برنامه رو هم گذاشتم
ممنون

mostafa_shaeri_tj
یک شنبه 03 آبان 1388, 14:07 عصر
http://barnamenevis.org/forum/showthread.php?t=171338

fchmmm
پنج شنبه 31 تیر 1389, 16:38 عصر
اگه می شه محبت کنین و منو در نوشتن این برنامه راهنمایی کنین:(به زبان سی شارپ)
یک سرور و چندین کلاینت در حال اجرا باشند
یک سرور روی شبکه اجرا میشود.
آدرس ارتباط با سرور (آی پی و پورت ارتباطی) در تمامی کلاینت ها ثبت میگردد.
کلاینت ها اقدام به برقراری ارتباط با سرور میکنند.
اگر کلاینتی به دلیل مشغول بودن سرور موفق به برقراری ارتباط نشد به مدت زمان تصادفی منتظر مانده و مجددا برای برقراری ارتباط اقدام میکند.
هر کلاینتی که موفق به برقراری ارتباط با سرور شد درخواست خود را اعلام میکند
سرور به کلاینت فهرستی از اعداد را برای پردازش اعلام میکند.
کلاینت بلا فاصله پس از دریافت فهرست و اعلام صحت دریافت اطلاعات از سرور جداشده و شروع به پردازش میکند.
پس از اتمام پردازش کلاینت مجددا به سرور متصل شده و پس از اعلام گزارش از اعداد اولی که پیدا کرده است درخواست دریافت فهرست پردازشی جدید را ارسال کرده و این مسیر ادامه میابد
هر کلاینت در لحظه ی ارسال پیام به سرور متصل گردیده، پیام را ارسال و پاسخ را دریافت میکند و بلافاصله از سرور جدا میشود تا ارتباط برای سایر کلاینت ها آزاد شود. به عنوان مثال یک کلاینت به سرور متصل شده و پیام "کلاینت شماره *** آماده" (به جای *** شماره یا نام کلاینت که توسط یک جعبه متن در برنامه تعیین میشود قرار میگیرد) را ارسال میکند. سرور هم در پاسخ پیام "کلاینت *** دریافت شد" را ارسال میکند. و کلاینت پس از دریافت این پیام از سرور جدا میشود.
خواهشاً اگه کسی می دونه منو راهنمایی کنه

amatur_barnamenevis
چهارشنبه 25 خرداد 1390, 11:42 صبح
سلام
من يه مشكل دارم اونم اينكه وقتي يه برنامه كلاينت ميخواد وصل بشه به سرور برنامه هنگ ميكنه اين در حالتي هستش كه قبلا يه برنامه كلاينت به سرور هست و مي تونه بهش متن ارسال كنه و متن ارساليش رو دوباره ببينه ولي وقتي دومين كلاينت ميخواد وصل بشه و دكمه اتصال رو ميزنم فرمش ميره توي هنگ اينم كد سمت سرور هستش اگه كد كلاينت لازمه اونم بذارم؟؟

//Run Servet
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("Server IP Address:" + ip + " Port Number: " + pi.Port, "Your Setting is Set", MessageBoxButtons.OK);
connection = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
connection.Bind(pi);
connection.Listen(10);
Thread nakh1 = new Thread(new ThreadStart(listening));
nakh1.Start();
run.Enabled = false;
serverconnect.Text = "Connection is Connected";

}

private void listening()
{
newclient = connection.Accept();
client = (IPEndPoint)newclient.RemoteEndPoint;
newclient.Send(msgserver);
Thread nakh2 = new Thread(new ThreadStart(daterecieve));
nakh2.Start();
}
private void daterecieve()
{

while (true)
{
while (true)
{
length = newclient.Receive(data);
if (length > 0)
{
text = System.Text.Encoding.UTF8.GetString(data, 0, length);
text2 = Encoding.ASCII.GetBytes(text);
newclient.Send(text2);
break;
}

}
fillTextBox(text);
}
}