نمایش نتایج 1 تا 17 از 17

نام تاپیک: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1390
    پست
    80

    برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    سلام دوستان این موضوعی که من واسش تاپیک زدم تکراریه و مثلش زیاد هست داخل سایت که هیچ کدوم به تنیجه نریسده یا فقط سوال بوده یا لینک، من از دیروز ساعت 12 ظهر تا 1 شب سرچ کردم ولی به نتیجه نریسیدم
    لطفا 1 پاسخ کامل بدید مرسی

    من 1 برنامه تحت شبکه درست کردم که چند کاربر هم زمان باهاش کار میکنن که برای اینکه لیست نمایش داده ها همون گرید ویو ،با توجه به هر تغییر در دیتابیس توسط کابران دیگر به روز بشه و تغییراتو نمایش بده از سوکت استفاده کردم به طوری که بعد از هر تراکنش کلاینتی که تراکنش را انجام میده 1 را به سرور می فرسته و سرور هم 1 رو به همه ی کلاینتها می فرسته ، هر کلاینت که 1 را دریافت کرد گرید ویو رو مجدد از بانک بایند میکنه
    حالا من تا کانکت کردن چند کلاینت به سرور پیش رفتم و همه کلاینها هم به سرور پیام میدن ولی نمیدونم سرور چه طور به همهی کلاینتهایی که وصل شدند پیام بده
    من این برنامرو اول به شکل چت نوشتم تا از کارکردش مطمئن شم بعد به برنامه که بالا گفتم اظافه میکنم
    کد سرور و کلاینت رو میزارم تا دوستان راحت تر رهنمایی کنن
    نوع برنامه ویدوز فرمه

    کد سرور
    public partial class Form2 : Form
    {
    TcpClient clientSocket;
    string clNo;
    public Form2()
    {
    InitializeComponent();
    CheckForIllegalCrossThreadCalls = false;
    }



    private void Form2_Load(object sender, EventArgs e)
    {

    Thread ctThread = new Thread(connect);
    ctThread.Start();
    }
    private void connect()
    {
    TcpListener serverSocket = new TcpListener(9050);
    TcpClient clientSocket = default(TcpClient);
    int counter = 0;

    serverSocket.Start();
    MessageBox.Show(" >> " + "Server Started");

    counter = 0;
    while (true)
    {
    counter += 1;
    clientSocket = serverSocket.AcceptTcpClient();
    string con = clientSocket.Client.AddressFamily.ToString();
    listBox1.Items.Add(" >> " + "Client No:" + Convert.ToString(counter) + " started!");

    startClient(clientSocket, Convert.ToString(counter));
    }

    clientSocket.Close();
    serverSocket.Stop();
    listBox1.Items.Add(" >> " + "exit");
    }




    public void startClient(TcpClient inClientSocket, string clineNo)
    {
    this.clientSocket = inClientSocket;
    this.clNo = clineNo;
    Thread ctThread = new Thread(doChat);
    ctThread.Start();
    }
    public void doChat()
    {
    int requestCount = 0;
    byte[] bytesFrom = new byte[10025];
    string dataFromClient = null;
    Byte[] sendBytes = null;
    string serverResponse = null;
    string rCount = null;
    requestCount = 0;

    while ((true))
    {
    try
    {
    dataFromClient = null;
    serverResponse = null;
    requestCount = requestCount + 1;
    NetworkStream networkStream = clientSocket.GetStream();
    networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);

    dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
    // dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
    Form2 frm = new Form2();

    listBox1.Items.Add(" >> " + "From client-" + clNo +" : "+ dataFromClient);
    if (dataFromClient.Substring(0,1) == "1")
    {
    rCount = Convert.ToString(requestCount);
    serverResponse = "1";
    //"Server to clinet(" + clNo + ") " + rCount;

    sendBytes = Encoding.ASCII.GetBytes(serverResponse);
    networkStream.Write(sendBytes, 0, sendBytes.Length);
    networkStream.Flush();
    }
    // listBox1.Items.Add(" >> " + serverResponse);
    }
    catch (Exception ex)
    {
    MessageBox.Show(" >> " + ex.ToString());
    }
    }
    }

    private void button1_Click(object sender, EventArgs e)
    {

    }

    }


    کد سمت کلاینت

    public partial class Form1 : Form
    {
    private delegate void AddListBoxItemDelegate(object item);
    static byte[] data = new byte[2048];
    static string input, stringData;
    static IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9050);
    static Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    static int recv;
    public Form1()
    {
    InitializeComponent();
    CheckForIllegalCrossThreadCalls = false;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    Thread nakh1 = new Thread(new ThreadStart(server_cncnt));
    nakh1.Start();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    input = textBox1.Text;
    server.Send(Encoding.ASCII.GetBytes(input));
    listBox1.Items.Add("Client :" + input);
    textBox1.Text = "";

    }
    public void server_cncnt()
    {
    try
    {
    server.Connect(ipep);
    //server.Send(Encoding.ASCII.GetBytes("H! Server"));
    }
    catch (SocketException)
    {
    MessageBox.Show("unable connect to server", "wairning");
    }
    while (true)
    {

    recv = server.Receive(data);
    if (Encoding.ASCII.GetString(data) == ".|.")
    {
    server.Shutdown(SocketShutdown.Receive);
    server.Close();

    }
    listBox1.Items.Add("Server :"+Encoding.ASCII.GetString(data, 0, recv));
    //AddListBoxItem(Encoding.ASCII.GetString(data, 0, recv));
    }
    }
    private void AddListBoxItem(object item)
    {
    if (this.listBox1.InvokeRequired)
    { // This is a worker thread so delegate the task.
    this.listBox1.Invoke(new AddListBoxItemDelegate(this.AddListBoxItem), item);
    }
    else
    { // This is the UI thread so perform the task.
    this.listBox1.Items.Add(item);
    }
    }
    }

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1390
    پست
    80

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    دوستان عزیز رهنمایی کنید لطفا

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1390
    پست
    80

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    کسی نیست یاری بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

  4. #4
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    971

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    سلام دوست عزیز.
    شما باید موقعی که توی سرور سوکت رو Accept میکنی سوکت هارو توی یک List آرایه ذخیره کنی و بعد با یه foreach راحت به تک تک کلاینت ها دیتا بفرستی

    موفق باشی /

  5. #5
    کاربر تازه وارد آواتار karimi5555
    تاریخ عضویت
    شهریور 1391
    محل زندگی
    تهران
    پست
    48

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    ممکنه یه مثال کوچیک بزنید؟
    ممنون

  6. #6
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    971

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    بنده با سوکت سی شارپ آشنایی ندارم. معمولا توی پروژه هام از کلاس های آماده استفاده میکنم.
    اول باید بگم که شما باید یک کلاس سوکت جدا واسه برنامتون بسازید که رویداد ها و متدهای مخصوص خود رو داشته باشه که کار مالتی کلاینت رو واستون آسونتر کنه و بعد به ادامه کار بپردازید.

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1390
    پست
    80

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    نقل قول نوشته شده توسط _behnam_ مشاهده تاپیک
    بنده با سوکت سی شارپ آشنایی ندارم. معمولا توی پروژه هام از کلاس های آماده استفاده میکنم.
    اول باید بگم که شما باید یک کلاس سوکت جدا واسه برنامتون بسازید که رویداد ها و متدهای مخصوص خود رو داشته باشه که کار مالتی کلاینت رو واستون آسونتر کنه و بعد به ادامه کار بپردازید.
    دوست عزیز مشکل من هم همینجاست دیگه هر چه قدر تلاش کردن واسه این کار به نتیجه نرسیدم

  8. #8
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1390
    پست
    80

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    یعنی واقعا کسی نیست که بلد باشه؟؟؟؟؟؟؟

  9. #9
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    971

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    یکم شیبا باشید دوست عزیز
    با توجه به اینکه میگید نمیتونید یک کلاس جدا واسه سوکت بنویسید من بهتوت پیشنهاد میکنم که از کلاس های آماده استفاده کنید.
    یک DLL متن باز واستون میزارم که یه سوکت خوب هست واسه اینکاری که شما میخواید با ویژوال بیسیک .برنامه رو توی پروژتون به عنوان یه لایه جدید باز کنید و استفاده کنید. پروژتون رو بنویسید هرجا کمک خواستید بگید اگه سوادم رسید کمک میکنم
    فایل های ضمیمه فایل های ضمیمه

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1390
    پست
    80

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    نقل قول نوشته شده توسط _behnam_ مشاهده تاپیک
    یکم شیبا باشید دوست عزیز
    با توجه به اینکه میگید نمیتونید یک کلاس جدا واسه سوکت بنویسید من بهتوت پیشنهاد میکنم که از کلاس های آماده استفاده کنید.
    یک DLL متن باز واستون میزارم که یه سوکت خوب هست واسه اینکاری که شما میخواید با ویژوال بیسیک .برنامه رو توی پروژتون به عنوان یه لایه جدید باز کنید و استفاده کنید. پروژتون رو بنویسید هرجا کمک خواستید بگید اگه سوادم رسید کمک میکنم
    دوست عزیز من سی شارپ کار میکنم ن ویبی

  11. #11

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها


  12. #12
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1390
    پست
    80

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    دوست عزیز این توضیحات میشه پاک کردن صورت مساله من که تا اینجاش اومدم خب تا اخرش یاد می گیرم

  13. #13

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    نقل قول نوشته شده توسط Me3ter مشاهده تاپیک
    دوست عزیز این توضیحات میشه پاک کردن صورت مساله من که تا اینجاش اومدم خب تا اخرش یاد می گیرم
    به هر حال روش Socket نویسی در یک شبکه داخلی در موارد آموزشی و کنفرانس ها بیشتر به درد میخوره نه در سیستم های مدیریتی :)

    موفق باشید

  14. #14
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    971

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    نقل قول نوشته شده توسط Me3ter مشاهده تاپیک
    دوست عزیز من سی شارپ کار میکنم ن ویبی
    بنده نگفتم که شما بیاید ویبی کار کنید گفتم این کلاس با ویبی نوشته شده!!
    شما پروژه سی شارپ باز کنید یک لایه جدید ایجاد کنید به زبان ویبی که این پروژه رو بتونید استفاده کنید یا میتونید کامپایل کنید و DLL رو توی رفرنس ها اضافه کنید
    واسه این میگم لایه جدید ایجاد کنید و سورس رو باز کنید که اگه توی برنامه خواستید امکاناتی به سوکت اضافه کنید کارتون راحت باشه

    موفق باشید.

  15. #15
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1390
    پست
    80

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    نشد اقا :(

  16. #16
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    971

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    چی نشد؟
    اینجا نشد میتونه چندین مفهوم داشته باشه!
    1. فایلی که دادید خراب بود
    2.من بلد نیستم باهاش کار کنم
    و .....
    لطفا واضح توضیح بدید تا جواب واضح بگیرید .

    ممنون/

  17. #17
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1390
    پست
    80

    نقل قول: برقراری ارتباط چند کلاینت با یک سرور و ارسال پیام از سرور به همه کلاینتها

    نقل قول نوشته شده توسط _behnam_ مشاهده تاپیک
    چی نشد؟
    اینجا نشد میتونه چندین مفهوم داشته باشه!
    1. فایلی که دادید خراب بود
    2.من بلد نیستم باهاش کار کنم
    و .....
    لطفا واضح توضیح بدید تا جواب واضح بگیرید .

    ممنون/
    نه من نتونستم باهاش کار کانم

تاپیک های مشابه

  1. ارتباط همزمان یک سرور و چند کلاینت
    نوشته شده توسط peym4ns در بخش توسعه نرم افزارهای تحت شبکه
    پاسخ: 6
    آخرین پست: پنج شنبه 30 اردیبهشت 1395, 16:32 عصر
  2. سوال: ارسال پیام از سرور به شما با استفاده از comet یا reverse ajax
    نوشته شده توسط tehro0n در بخش PHP
    پاسخ: 1
    آخرین پست: پنج شنبه 06 مهر 1391, 13:06 عصر
  3. سوال: برقراری ارتباط بین کلاینت A با کلاینت B / سرور
    نوشته شده توسط No_Name در بخش C#‎‎
    پاسخ: 3
    آخرین پست: چهارشنبه 16 آذر 1390, 16:28 عصر
  4. ارتباط چند کلاینت به یک سرور
    نوشته شده توسط TRex2000 در بخش برنامه نویسی در 6 VB
    پاسخ: 7
    آخرین پست: پنج شنبه 18 مرداد 1386, 06:54 صبح
  5. ارسال پیام از سرور به کلاینت بدون استفاده از مسنجر ویندوز
    نوشته شده توسط Gladiator در بخش برنامه نویسی در Delphi
    پاسخ: 10
    آخرین پست: جمعه 14 آذر 1382, 17:44 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •