Socket در سی شارپ

برای کار با Socket نیاز هست تا شما یک Socket در سمت کلاینت باز کنید و یک Socket در سرور. Socket در سی شارپ هم از این قاعده مستثنی نیست.
برای کار با Socket، همیشه در سمت سرور باید به آن Socket گوش داده شود تا وقتی از کلاینت داده ارسال می شود، داده را دریافت و دوباره به همان Socket باز شده اطلاعات را بفرستد.

Socket در سی شارپ

برای تبادل داده با Socket نیاز است تا داده ها تبدیل به آرایه ای از byte شوند.
برای استفاده از Socket باید فضانام System.Net.Sockets را اضافه کنید.
آی پی سرور و پورتی که Socket باید به آن متصل شود را مشخص می کنید.
وقتی اطلاعات دریافت شود در متغیر byte ریخته می شود.
در کد زیر یک رشته متشکل از Id و Number و quantity برای سرور ازسال می خواهد شد که در خط ۱۹ تبدیل به آرایه ای از بایت ها می شود.
در خط ۲۳ یک Socket ساخته می شود که پارامترهای آن به شرح زیر است:

  • AddressFamily : شبکه ای که سوکت از آن استفاده می کند.
  • SocketType : نوع سوکت است که یک طرفه و دوطرفه بودن آن را تعیین می کند.
  • ProtocolType : نوع پروتکل استفاده را بیان می کند.
  • پس از ساخت Socket آن را در خط ۲۶ به آی پی و پورت مشخص شده کانکت می کنیم و در خط ۲۷ داده ها ارسال می شود.
    پس از ارسال داده ها، در خط ۲۹ داده ها دریافت می شود و در متغیر byte قرار می گیرد.
    در کدهای زیر سوکت به یک آی پی با پورت مشخص باز می شود و اطلاعات را ارسال و دریافت می کند. این عمل هر ۱۵ دقیقه یک بار انجام می شود.

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

    Encoding.UTF8.GetBytes
    Socket
    AddressFamily
    SocketType
    ProtocolType
    socket.Connect
    SocketFlags
    socket.Receive

    ری استارت ویندوز CE

    در شرکت در حال توسعه یک دستگاه هستم که دارای سیستم عامل ویندوز CE هست. در برخی مواقع ماژول وایرلس دستگاه قطع می شود و دستگاه باید ری استارت شود. اما دکمه ری استارت دستگاه در پشت دستگاه هست و برای کاربر مشکل می باشد. تصمیم گرفتم در تنظیمات برنامه کدی را قرار دهم که دستگاه با استفاده از یک تابع ری استارت شود.
    برای ری استارت ویندوز CE می توانید از کد زیر استفاده کرد :

    برای استفاده از DllImport فراموش نشود که فضانام زیر را به کدهای خود اضافه کنید:

    استفاده از JSON در سی شارپ

    در این نوشته ابتدا به معرفی کوتاه JSON می پردازم و سپس روش استفاده از JSON در سی شارپ را مورد بررسی قرار می دهم.

    JSON چیست؟
    یکی از روش های تبادل اطلاعات XML هست. این روش تبادل اطلاعات خوب هست اما با JSON اطلاعات کم حجم تر و خواناتر می شوند.
    در واقع JSON یک رشته است که داده های آن با علائم خاصی از هم جدا شده اند. یک رشته JSON مانند زیر است:

    رشته XML متناظر با JSON بالا به شکل زیر است:

    برای اطلاعات تکمیلی به ^ و ^ و ^ مراجعه کنید.

    استفاده از JSON در سی شارپ


    یکی از بهترین کتابخانه های موجود برای بکارگیری JSON در دات نت، کتابخانه Json.NET هست که هم از طریق سایت Newtonsoft و هم از طریق NuGet با دستور زیر قابل دسترسی هست:

    با استفاده از کد های زیر یک دستوری را به سرور فرستاده و سپس جواب آن را که یک رشته هست، تبدیل به JSON می کنم تا بتوان متوجه شد سرور چه پاسخی ارسال کرده است.
    در تابع زیر یک دستور ساخته می شود و پس از آن تابع ConvertStringToJson که رشته JSON را تبدیل به یک JSON Object می کند، صدا زده می شود.

    در کد بالا، با استفاده از دو خط زیر، یک شیی JSON را ساخته و به راحتی مقدار آن را در یک شرط قرار دادیم.

    CustomJsonParser.ConvertStringToJson که وظیفه اش ارسال دستور به کلاس FetchInternetData و تبدیل پاسخ دریافتی به JSONObject است به صورت زیر می باشد:

    تابع RequestAndResponseData برای دریافت و ارسال داده ها به سرور می باشد:

    در نوشته های بعدی قصد دارم چگونگی تبدیل JSON به DataTable برای نمایش داده ها در DataGridView را شرح دهم.

    تفاوت ()int.Parse و ()int.tryParse

    پس مدت ها که دوران سربازی به خاتمه رسید، تصمیم دوباره گرفتم تا نوشتن در وبلاگم را شروع کنم. می خواستم اولین نوشته ام بعد از دوران سربازی، در مورد این دورانٍ به معنای کلمه مزخرف باشد. اما برای گفتن از این دوران باید وقت مناسبی گذاشت، پس بهتر هست به سراغ نگارش همین مقاله بروم. از جمله سوالاتی که برای اکثر برنامه نویسان پیش آمده، وجود متدها و نوع متغیرهایی ست که تقریبا هم نام هستند و تقریبا هم ورودی و خروجی های یکسانی دارند، مانند: تفاوت String و string یا تفاوت ()int.Parse و ()int.TryParse .

    تفاوت ()int.Parse و ()int.tryParse

    هر دو متد ()int.Parse و ()int.TryParse در نهایت یک رشته عددی را تبدیل به نوع عددی متناظر با آن رشته عددی می کنند. وقتی ()int.Parse نتواند رشته را به عدد تبدیل کند، یک استثناء رخ می دهد. اما اگر ()int.TryParse نتواند رشته را به عدد تبدیل کند، یک مقدار bool بر میگرداند.
    به عنوان مثال، در کد زیر، رشته ۲۰۰ بدون خطایی تبدیل به مقدار عددی ۲۰۰ می شود.

    در هنگام اجرای ()int.Parse ممکن است سه استثناء رخ دهد :
    – پارامتر ورودی null باشد، ArgumentNullException (^) رخ می دهد.
    – پارامتر ورودی قابلیت تبدیل به عدد را نداشته باشد، FormatException (^) رخ می دهد.
    – پارامتر ورودی خارج از مجدوده integer باشد، OverflowException (^) رخ می دهد.

    متد ()int.TryParse در صورتی که رشته را به عدد تبدیل کند،true را برگشت می دهد و در صورت تبدیل نشدن رشته به عدد، مقدار false را بر میگرداند. برای درک بهتر این موضوع، به مثال زیر توجه کنید.

    با توجه به این که هر دو متد اندکی با هم تفاوت دارند، موقعیت استفاده از هر دو متد کاملا وابسته به محل اجرایشان است. اما پیشنهاد بنده این است که استفاده از متد ()int.TryParse قابل قبول تر است و کد بهینه و امن تری را در اختیار قرار می دهد.

    فارسی سازی Telerik MessageBox

    در نوشته های قبل در مورد فارسی سازی Telerik GridView صحبت کردم. در این نوشته به فارسی سازی MessageBox می پردازم.
    MessageBox نیز دارای خاصیت RTL و مانند MessageBox خود دات نت دارای آیکون و دکمه های مختلف هست. برای استفاده از MessageBox تلریک در برنامه و راست چین بودن آن از کد زیر می توانید استفاده کنید:

    فارسی سازی Telerik MessageBox ابتدا کلاس زیر را ایجاد کنید:

    در Program.cs و یا فرمی که می خواهید MessageBox نمایش داده شود٬ کد زیر را برای فارسی سازی آن قرار دهید:

    در فرمی که کد بالا را می گذارید٬ فضانام زیر را نیز وارد کنید: