در این آموزش قراره برنامه ای بسازیم که به کمکش میتونیم پورت ھای مورد نظر خودمون رو باز کنیم
در آموزش قبلی سی شارپ برنامه ای ساخته بودیم که تنھا یک پورت رو باز میکرد
به درخواست دوستان امروز این برنامه ھر پورتی که ما ازش میخواییم رو برامون فعال خواھد کرد
ابتدای آموزش باید بگم که
این برنامه مخرب نیست
بعد از بستن برنامه پورت ھایی که توسط این برنامه باز شده بودند ھم به طور خودکار غیرفعال خواھند شد.
خوب بریم سر آموزش :
ویژوآل استدیو رو اجرا کنید و یه پروژه جدید به زبان سی شارپ ایجاد کنید
اگر ھنوز نمیدونید چطور باید ویژوآل استدیو رو اجرا کنید و یا چگونه پروژه سی شارپ ایجاد کنید پست ھای قبلی رو بخونید!!!
به پروژه تون یک تکست باکس و یک دکمه اضافه کنید
بر روی دکمه دوبار کلیک کنید تا به قسمت کدھا برین
در قسمت کدھای دکمه کد زیر رو اضافه کنید
به شکل زیر :
بعد برین به قسمت using و تکه کدھای زیر رو اضافه کنید
سپس کد زیر رو
بعد از
اضافه کنید
کدھای این پروژه در این آموزش تقریبا توضیح داده شده
قسمت ھایی که به این برنامه اضافه شده یک Text Box ھست که قراره عددی که در آن
وارد میشه در متن برنامه اعمال شه و برنامه اون پورت رو باز کنه
خوب اینجا چند تا محدودیت داریم
ابتدا اینکه چگونه بجای یک عدد یا یک مقدار ثابت به برنامه دستور گرفتن یک مقدار متغییر بدیم؟
چون در برنامه قبلی ما فقط یک مقدار ثابت (عدد 587 ) رو به برنامه داده بودیم
محدودیت دوم اینکه این مقدار ثابت باید عدد صحیح باشه
یعنی باید به تکست باکسمون دستور بدیم که ھیچ کارکتری بجز اعداد صحیح رو قبول نکنه
چون اگه بجای عدد حرف یا کارکترھای دیگه ای رو قرار بدیم برنامه دچار مشکل خواھد شد
دقت کنید این محدودیت ھا رو چطور برطرف میکنیم
محدودیت اولمون توسط کد ھای زیر برطرف میشه
خط سوم ھمون خطیه که پورت رو دریافت و برای فعال سازی آماده اش میکنه
ما نمیتونیم در این خط بطور مستقیم دستور بدیم که مقدار تکست باکس رو دریافت کنه
برای اینکار ابتدا یک متغییر از نوع عدد صحیح رو معرفی کردیم a
سپس تعریف کردیم که این متغییر متعلق به تکست باکسمونه
در آخر ھم توی کد اصلی مون بجای تکست باکس اسم متغییرش a رو آوردیم
با وجود اینکه اینجا مقدار متغییر رو از نوع عدد صحیح int تعریف کردیم
باز ھم ممکنه کاربر بجای عدد صحیح اشتباھا کارکتر یا عدد غیر صحیح رو وارد کنه
برای جلوگیری از این اشتباه ھم از Try ... Catch استفاده کردیم تا در صورت اشتباه برنامه بجای از کار افتادن ، پیام خطا رو نمایش بده
راھکار دیگه ھم این بود که به تکست باکس دستور بدیم که بجز اعداد صحیح کارکتر دیگه ای رو
قبول نکنه
برای اینکار در فرم طراحیتون تکست باکس رو انتخاب کنید و به قسمت Events برین و از لیست بر روی KeyPress دوبار کلیک کنید تا با قسمت کدھای این بخش روبرو شین
سپس کد زیر رو در این قسمت وارد کنید
به کمک این کد شما به تکست باکس دستور میدین که بجز اعداد صحیح ھیچ کارکتر دیگه ای رو قبول نکنه
در آخر ھم میتونید برنامه تون رو تست ویا ازش استفاده کنید و اگه مشکلی داشتین با من درمیون بزارین...
اگه عمری باقی موند حتما کمکتون میکنم
اینم برنامه ای که من ساختم
ایرانی ھمیشه سرافراز
در آموزش قبلی سی شارپ برنامه ای ساخته بودیم که تنھا یک پورت رو باز میکرد
به درخواست دوستان امروز این برنامه ھر پورتی که ما ازش میخواییم رو برامون فعال خواھد کرد
ابتدای آموزش باید بگم که
این برنامه مخرب نیست
بعد از بستن برنامه پورت ھایی که توسط این برنامه باز شده بودند ھم به طور خودکار غیرفعال خواھند شد.
خوب بریم سر آموزش :
ویژوآل استدیو رو اجرا کنید و یه پروژه جدید به زبان سی شارپ ایجاد کنید
اگر ھنوز نمیدونید چطور باید ویژوآل استدیو رو اجرا کنید و یا چگونه پروژه سی شارپ ایجاد کنید پست ھای قبلی رو بخونید!!!
به پروژه تون یک تکست باکس و یک دکمه اضافه کنید
بر روی دکمه دوبار کلیک کنید تا به قسمت کدھا برین
در قسمت کدھای دکمه کد زیر رو اضافه کنید
if (textBox1.Text == "")
{
MessageBox.Show("لطفا ابتدا شماره پورت را وارد کنید");
textBox1.Focus();
}
else
{
try
{
int a;
a = int.Parse(textBox1.Text);
port32 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipLocal = new IPEndPoint(IPAddress.Any, a);
port32.Bind(ipLocal);
port32.Listen(100);
textBox1.Text = "";
MessageBox.Show("پورت مورد نظر فعال شد");
}
catch
{
MessageBox.Show("خطا");
}
}
بعد برین به قسمت using و تکه کدھای زیر رو اضافه کنید
using System.Net;
using System.Net.Sockets;
using System.IO.Ports;
سپس کد زیر رو
static Socket port32;
public partial class Form1 : Form
کدھای این پروژه در این آموزش تقریبا توضیح داده شده
قسمت ھایی که به این برنامه اضافه شده یک Text Box ھست که قراره عددی که در آن
وارد میشه در متن برنامه اعمال شه و برنامه اون پورت رو باز کنه
خوب اینجا چند تا محدودیت داریم
ابتدا اینکه چگونه بجای یک عدد یا یک مقدار ثابت به برنامه دستور گرفتن یک مقدار متغییر بدیم؟
چون در برنامه قبلی ما فقط یک مقدار ثابت (عدد 587 ) رو به برنامه داده بودیم
محدودیت دوم اینکه این مقدار ثابت باید عدد صحیح باشه
یعنی باید به تکست باکسمون دستور بدیم که ھیچ کارکتری بجز اعداد صحیح رو قبول نکنه
چون اگه بجای عدد حرف یا کارکترھای دیگه ای رو قرار بدیم برنامه دچار مشکل خواھد شد
دقت کنید این محدودیت ھا رو چطور برطرف میکنیم
محدودیت اولمون توسط کد ھای زیر برطرف میشه
int a;
a = int.Parse(textBox1.Text);
....
IPEndPoint ipLocal = new IPEndPoint(IPAddress.Any, a)
ما نمیتونیم در این خط بطور مستقیم دستور بدیم که مقدار تکست باکس رو دریافت کنه
برای اینکار ابتدا یک متغییر از نوع عدد صحیح رو معرفی کردیم a
سپس تعریف کردیم که این متغییر متعلق به تکست باکسمونه
در آخر ھم توی کد اصلی مون بجای تکست باکس اسم متغییرش a رو آوردیم
با وجود اینکه اینجا مقدار متغییر رو از نوع عدد صحیح int تعریف کردیم
باز ھم ممکنه کاربر بجای عدد صحیح اشتباھا کارکتر یا عدد غیر صحیح رو وارد کنه
برای جلوگیری از این اشتباه ھم از Try ... Catch استفاده کردیم تا در صورت اشتباه برنامه بجای از کار افتادن ، پیام خطا رو نمایش بده
راھکار دیگه ھم این بود که به تکست باکس دستور بدیم که بجز اعداد صحیح کارکتر دیگه ای رو
قبول نکنه
برای اینکار در فرم طراحیتون تکست باکس رو انتخاب کنید و به قسمت Events برین و از لیست بر روی KeyPress دوبار کلیک کنید تا با قسمت کدھای این بخش روبرو شین
سپس کد زیر رو در این قسمت وارد کنید
if (!(char.IsDigit(e.KeyChar) || e.KeyChar == (char)Keys.Back))
e.Handled = true;
در آخر ھم میتونید برنامه تون رو تست ویا ازش استفاده کنید و اگه مشکلی داشتین با من درمیون بزارین...
اگه عمری باقی موند حتما کمکتون میکنم
اینم برنامه ای که من ساختم
ایرانی ھمیشه سرافراز
خیلی معرفت داری ! بعد از این همه مدت فک نمیکردم به قولت عمل کنی، ولی کردی !
قربون معرفتت ویروس خوش قول
ممنون به هر حال