برای مشاهده مفیدترین ارسال در این موضوع اینجا کلیک کنید

نمایش نتایج: از شماره 1 تا 3 از مجموع 3
  1. #1
    ADMIN
    تاریخ عضویت
    2011 October
    محل سکونت
    گیلان
    سن
    30
    ارسال ها
    136
    تشکر
    814
    تشکر شده 480 بار در 131 پست


    1 امتياز مثبت از 1 راي
    آيا اين پست براي شما سودمند بود؟ بله | خیر

    Post کار با سوکت های آسنکرون در c#

    سوکت های سنکرون در برنامه های ویندوز و کلا سیستم های مالتی تسک کاربردی ندارند. چرا که بالفرض در زمانی از متد Accept استفاده میکنیم، در این حالت برنامه تا رسیدن یک سوکت به آن قفل شده و قادر به انجام کاری نیست.(Thread || Timer)
    نمونه 1
    نمونه 2
    در سوکت های آسنکرون از متدهای آسنکرون
    (و..BeginAccept) برای گوش دادن ، دریافت و ... استفاده میکنیم.که نیازی به این چیزا نداره و به راحتی در برنامه های تحت ویندوز قابل استفاده است....





    using System.Net.Sockets;
    using System.Net;

    Socket MySocket;
    AsyncCallback MyCallBack;
    byte[] dataBuffer;

    readonly int _ServerPort = 9999;
    string _ServerIPAddress;


    private string GetIP()// پیدا کردن IP خودمون

    {
    string HostN = Dns.GetHostName();
    IPHostEntry IP = Dns.GetHostEntry(HostN);

    string MyIP = "";

    foreach (IPAddress IPADD in IP.AddressList)
    {

    if (IPADD.AddressFamily == AddressFamily.InterNetwork)
    {
    MyIP = IPADD.ToString();
    return MyIP;
    }
    }

    return "";

    }
    private void Server()// متدی که برای سرور صدا زده میشه
    {
    MySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    IPEndPoint MyEndPoint = new IPEndPoint(IPAddress.Any, _ServerPort);

    MySocket.Bind(MyEndPoint);
    MySocket.Listen(1);

    MySocket.BeginAccept(new AsyncCallback(Server_Gate), null); // متد آسنکرون و Delegate


    }

    private void Client() // متدی که برای کلاینت
    {
    IPAddress ServerIP = IPAddress.Parse(_ServerIPAddress);
    IPEndPoint MyEndIP = new IPEndPoint(ServerIP, _ServerPort);
    MySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    MySocket.Connect(MyEndIP);
    if (MySocket.Connected)
    {
    Wait4Data();
    }

    }

    private void Server_Gate(IAsyncResult asyn)// این متد وقتی که کلایت یه سرور وصل میشه توسط متد آسنکرون صدا زده میشه

    {
    MySocket = MySocket.EndAccept(asyn);
    Wait4Data();

    }
    private void Wait4Data() //متدی برای صدا زدن مند آسنکرون هنگام دریافت اطلاعات
    {
    if (MyCallBack == null) MyCallBack = new AsyncCallback(ReciveData);
    dataBuffer = new byte[10526];
    MySocket.BeginReceive(dataBuffer, 0, dataBuffer.Length, SocketFlags.None, MyCallBack, MySocket);//متد آسنکرون وDelegate برای دریافت اطلاعات
    }

    private void ReciveData(IAsyncResult asyn)// این متد وقتی اطلاعاتی میاد صدا زده میشه
    {
    try
    {
    MySocket = (Socket)asyn.AsyncState;

    int lenght = MySocket.EndReceive(asyn);
    char[] chars = new char[lenght + 1];
    Decoder d = Encoding.UTF8.GetDecoder();
    int charLen = d.GetChars(dataBuffer, 0, lenght, chars, 0);
    string file = new string(chars);// اطلاعات دریافتی داخل string file ذخیره میشه
    Wait4Data();//و دوباره شروع به گوش دادن میکنه
    }
    catch { MessageBox.Show("Error!!"); }
    }

    public void Send(byte[] MyData)
    {
    if (MySocket != null)
    if (MySocket.Connected)
    MySocket.Send(MyData);


    }



    برای کار با متد های آسنکرون آشنایی با Delegate ها لازم است.
    یه برنامه ساده , چت که با این متد ها نوشته شده رو میزارم
    ...

    موضوعات مشابه:
    فایل های پیوست شده
    • نوع فایل: zip MyChat.zip (47.4 کیلو بایت,  این فایل 35 بار دانلود شده است)


    ..::Never Trust Someone Who Lies To You , Never Lie To Someone Who Trusts You::..


  2. #2
    عضو تازه وارد
    تاریخ عضویت
    2012 December
    ارسال ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    سلام به دوستان


    من یک برنامه چت آسکرون آماده دارم اما میخوام یک امکان بهش اضافه کنم که در صورت غلط املایی بعضی کلمات خود برنامه تشخیص دهد مانند نوشتن کلمه سلم به جای سلام

    این کار را باید با الگوریتم did you mean algoritm انجام داد . آیا کسی اطلاعاتی در این مورد داره ممنون میشم توضیحی دهید یا اگه برنامه اش دارید به اشتراک بگذارید

    باسپاس


  3. #3
    عضو تازه وارد
    تاریخ عضویت
    2012 December
    ارسال ها
    2
    تشکر
    0
    تشکر شده 0 بار در 0 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    سلام به دوستان


    من یک برنامه چت آسنکرون آماده دارم اما میخوام یک امکان بهش اضافه کنم که در صورت غلط املایی بعضی کلمات خود برنامه تشخیص دهد مانند نوشتن کلمه سلم به جای سلام

    این کار را باید با الگوریتم did you mean algoritm انجام داد . آیا کسی اطلاعاتی در این مورد داره ممنون میشم توضیحی دهید یا اگه برنامه اش دارید به اشتراک بگذارید

    باسپاس


 

 

کاربران برچسب خورده در این موضوع

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

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


Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
Persian Language By Ustmb.ir
این انجمن کاملا مستقل بوده و هیچ ارتباطی با دانشگاه علوم و فنون مازندران و مسئولان آن ندارد..این انجمن و تمامی محتوای تولید شده در آن توسط دانشجویان فعلی و فارغ التحصیل ادوار گذشته این دانشگاه برای استفاده دانشجویان جدید این دانشگاه و جامعه دانشگاهی کشور فراهم شده است.لطفا برای اطلاعات بیشتر در رابطه با ماهیت انجمن با مدیریت انجمن ارتباط برقرار کنید
ساعت 03:06 AM بر حسب GMT +4 می باشد.