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

نام تاپیک: listen کردن مجدد سرور بعد از قطع ارتباط

  1. #1

    listen کردن مجدد سرور بعد از قطع ارتباط

    سلام.
    من یه برنامه کلاینت سروری با روش Asynchronous نوشتم.
    ولی یه مشکلی دارم. اگه ارتباط کلاینت سرور رو قطع کنم یعنی دیسکانکت کنم بعد بخوام از طریق سرور مجدد رو همون پورت لیسن کنم ارور میده و میگه فقط 1 بار میشه از یه آدرس استفاده کرد.
    من متغیرم رو بعد از قطع ارتباط close هم میکنم و یه متغیر جدید هم new میکنم و میسازم. ولی باز همون ارور رو میده.
    تنها راهش اینه که سرور رو یه بار ببندم و دوباره اجرا کنم تا بتونم دوباره لیسن کنم.
    لطفا راهنمایی کنید چطور بعد از قطع ارتباط بتونم مجددا رو همون پورت لیسن کنم.

  2. #2
    استفاده از using یا Dispose در هنگام ختم تماس را هم امتحان کنید.

  3. #3
    سلام.
    میشه بیشتر توضیح بدی. در این زمینه اطلاعات ندارم.

  4. #4
    کاربر دائمی آواتار ARA
    تاریخ عضویت
    آبان 1383
    محل زندگی
    Bad Sector
    پست
    448
    دستور shutdown رو هم امتحان کن

  5. #5
    سلام.
    جواب نداد. لطفا راهنمایی کنید. سوال ساده ایه که.

  6. #6
    سلام.
    اصلا کلاس سوکت dispose نداره. شات دان هم کارمو راه ننداخت.

  7. #7
    کاربر دائمی آواتار ARA
    تاریخ عضویت
    آبان 1383
    محل زندگی
    Bad Sector
    پست
    448
    سلام من با کلاینت سرور زیاد سرو کله زدم

    اگه یک sample کوچک بگذاری اینجا کاملتر میتونم کمکت کنم

    چون وقت نمیکنم از اول خودم کد بنویسم تا چک کنم

  8. #8
    سلام.
    اینم مثال.
    byte[] buffer = new byte[1024];

    public Form1()
    {
    InitializeComponent();

    Socket Mainlistener = new Socket(AddressFamily.InterNetwork,
    SocketType.Stream, ProtocolType.Tcp);

    IPEndPoint server = new IPEndPoint(IPAddress.Any, 1800);
    Mainlistener.Bind(server);

    AsyncCallback callBackMethod = new AsyncCallback(AcceptCallback);

    Mainlistener.Listen(4);
    Mainlistener.BeginAccept(AcceptCallback,Mainlisten er);
    }

    private void AcceptCallback(IAsyncResult ar)
    {
    Socket temp = ((Socket)ar.AsyncState);
    Socket worker = temp.EndAccept(ar);
    AsyncCallback ReceiveMethod = new AsyncCallback(ReceiveCallBack);
    worker.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveMethod, worker);
    }

    private void ReceiveCallBack(IAsyncResult ar)
    {
    Socket worker = ((Socket)ar.AsyncState);
    int bytesReceived = worker.EndReceive(ar);

    string str = System.Text.UTF8Encoding.UTF8.GetString(buffer);
    ShowInfo(str);
    AsyncCallback ReceiveMethod = new AsyncCallback(ReceiveCallBack);
    worker.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveMethod, worker);
    }

    delegate void ShowInfoCallback(string text);
    private void ShowInfo(string text)
    {
    if (this.txtMain.InvokeRequired)
    {
    ShowInfoCallback d = new ShowInfoCallback(ShowInfo);
    this.Invoke(d, new object[] { text });
    }
    else
    {
    txtMain.Text+=text+"\n";

    }

    }

  9. #9
    چی شد پس؟؟؟؟

  10. #10
    کمک کنید....

  11. #11
    سلام.
    من هنوز گیرم.

  12. #12
    کاربر دائمی آواتار ARA
    تاریخ عضویت
    آبان 1383
    محل زندگی
    Bad Sector
    پست
    448

    Thumbs down

    سلام شرمنده نتونستم برنامه کامل براتون بگذارم ولی برنامه شما رو نگاه کردم

    یک نکته تو close کردن سوکت سرور دیدم که اگه میتونین چک کنین خوبه

    هر کلاینتی که به سرور وصل میشه و هر یک شی سکوت مختلف با اونی که منتظر کانکت هست تولید میکنه چون اون باید تمام ارتباط با کلاینت ها رو نگه داره




    منظورم اینه که وقتی کلاینت به سرور وصل میشه در متد onAccept سرور سوکتی که بعد از endAccept بدست میاد رو معمولا در یک لیست ذخیره میکنند تا برای قطع کردن کانکشتن بدونی که کدوم از کلاینت ها بصورت connected هستند یا نه

    اگه تو کد خودتون نگاه کنین میبینین که اگر در موقع shutdown کردن نگاهش کنی connectedآن falseبوده

  13. #13
    سلام.
    خوب راه حل چیه؟ من مقدار endaccept رو تو یه متغیر جدید هم ریختم ولی جواب نداد.

  14. #14

    Wink

    من قبلا یه برنامه واسه چت با سوکت نوشتم که مشکل قطع و وصل مجدد رو نداشت
    کارت رو راه میندازه
    فایل های ضمیمه Socket.rar (527.7 کیلوبایت, 55 دیدار)
    آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
    آن لحظه،
    لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .

    برنولی

  15. #15
    کاربر دائمی آواتار ARA
    تاریخ عضویت
    آبان 1383
    محل زندگی
    Bad Sector
    پست
    448
    سلام رضوی عزیز
    تو برنامه شما هم یک مشکل کوچک مثل همون که برای دوستمون گفتم نیز هست

    مگه فقط یک کلاینت دارین ؟؟

    فکر کنم دوستمون داخل کدشون میخواهند disconnect بشن
    شما صورت مسئله رو پاک کردین

  16. #16
    خب نگفتی با چندتا کلاینت می‌خوای
    این هم با چند تا کلاینت
    فایل های ضمیمه فایل های ضمیمه
    آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
    آن لحظه،
    لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .

    برنولی

  17. #17
    کاربر دائمی آواتار ARA
    تاریخ عضویت
    آبان 1383
    محل زندگی
    Bad Sector
    پست
    448
    حالا میرسیم به مرحله بعد که async کار کنین p;

  18. #18
    دیگه اینجاشو فعلا شرمندم تا بعد امتحانا
    فعلا هم که انداختند عقب
    تازه امتحان ارشد هم هست
    مشکل دیگه اینکه من با اون روش کار نکردم تازه باید برم بخونم ;)
    آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
    آن لحظه،
    لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .

    برنولی

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

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