همونطور که خودتون هم در جریانید پست آموزش ساخت کیلاگر به زبان سی شارپ کم و کسری ھای زیادی داره ، چون اون پست تنھا برای آشنا شدن با محیط برنامه نویسی نوشته شده
ھرچند در آینده قراره با کیلاگر ھای حرفه ای تر ھم آشنا شیم ولی ....
تا اون مدت میتونیم به ھمین کیلاگرمون پر و بال بدیم و ازش یه کیلاگر قوی درست کنیم
من ھر از گاھی یه قسمتش رو اضافه میکنم
مثل ھمین پست که یه قسمت تقریبا مھمه این برنامه است
ھمونطور که قبلا ھم گفتم برای ارسال یا دریافت اطلاعات از دنیای مجازی ما نیاز به یک آدرس آی پی و یک پورت باز داریم.
اگه این پورت بسته باشه مسلمأ ما با در بسته روبرو میشیم و نمیتونیم ھیچ اطلاعاتی رو ارسال یا دریافت کنیم
در آموزشمون ما از پورت 587 برای ارسال اطلاعات استفاده کردیم
اما ھیچ دستوری برای باز کردن این پورت رو وارد نکردیم
فرض آموزش این بود که این پورت بازه
خوب دیگه زیاد حرف زدم :
برید قسمت کدھای برنامه و تو قسمت Using دوتا کد زیر رو اضافه کنید
using System.Net;
using System.Net.Sockets;
بعد از اضافه کردن کدهای بالا باید کد زیر رو در قسمتی مناسب اضافه کنید
static Socket port32;
خوب دقت کنید چون الان زیاد حس و حال ندارم توضیح بیشتر بدم و ...
این کد رو بعد از خط زیر باید اضافه کنید
public partial class Form1 : Form
{
یعنی در کل به شکل زیر باید بشه
public partial class Form1 : Form
{
static Socket port32;
public Form1()
توضیح کد :
اینجا متغیر port32 رو به صورت ایستایی و سراسری تعریف کردیم و در ادامه قراره ازش استفاده کنیم
خوب حالا کد زیر رو تو قسمت form_load اضافه کنید
port32 = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipLocal = new
IPEndPoint(IPAddress.Any, 587 );
port32.Bind(ipLocal);
port32.Listen(100);
خط Form_Load امیدوارم یادتون باش!!!
خط زیر :
private void Form1_Load(object sender, EventArgs e)
{
}
یعنی کدمون رو بین {} ھای فورم لود باید قرار بدیم
خط اول این کد رو توضیح میدم :
port32 = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
در قسمت زیر
AddressFamily.InterNetwork
میگه که از سیستمی استفاده میکنیم که از آی پی ورژن چھار استفاده میکنه
(یعنی ھمون آی پی اینترنتی)
در قسمت
SocketType.Stream
سوکت ما میخواد بصورت جریان روان تبادل اطلاعات کنه
همون جریانی که بالاتر برای برنامه بصورت ایستایی معرفی کرده بودیم
ProtocolType.Tcp
نوع پروتکل رو مشخص میکنه که ھمون Tcp ھستش
نوع پورت : tcp
خط دوم این کد :
IPEndPoint ipLocal = new IPEndPoint(IPAddress.Any, 587 );
یه سیستم و یا تخصصی تر بگم یه اکسس پوینت معرفی میکنیم چون سیستم مورد نظرمون معلوم نیست چه آی پی داره از دستور Any استفاده کردم و برای پورت ھم که 587 رو وارد کردم.
میتونیم هر پورتی رو وارد کنیم
port32.Listen(100);
اینجا ھم برای پورتمون فال گوش میشیم
عدد صد 100 ھم میگه که میتونیم چھار تا اتصال به سیستم داشته باشیم.
خوب کدھا ھمین بود
حالا چطور تست کنیم که برنامه کار میکنه یا نه؟
به CMD برین
یادتون باشه الان شما به عنوان کاربر ساده از سیستم استفاده میکنید و ممکنه بعضی از دستورات به خوبی اجرا نشه و یا شاید قبل از اجرا ازتون اجازه بخواد که شما باید اجازه بدین تا بتونید روند برنامه رو ببینید. البته اگه به عنوان مدیر اصلی سیستم استفاده میکنید این مشکلات پیش نمیاد
در ھر صورت قبل از اینکه برنامه رو تست کنید توی سی ام دی دستور زیر رو وارد کنید
netstat -an
احتمالا پورت مورد نظرمون 587 بسته خواهد بود
یعنی اسمش توی لیست وجود نخواھد داشت
به عکس دقت کنید
برنامه رو اجرا کنید یا اینکه بر روی تست کلیک کنید
احتمالا فایر والتون پیام زیر رو میده که باید بر روی Allow Accsess کلیک کنید
این اخطار از طرف فایر والتون ھست که میگه:
اگه این برنامه اجرا بشه پورتی باز خواھد شد آیا شما اجازه میدھید؟
اینجا باید اجازه بدین ولی یادتون باشه اگه در مواقع دیگه ھمچین پیامی دیدین حتما Cancel کنید و ھمچین اجازه ای ندید بعد ھم پیگیر شین که چرا ھمچین پیامی نمایش داده شده بخاطر کدوم برنامه و ....
در ھر صورت بعد از اجرای برنامه و اجازه دادن به فایر وال دوباره به سی ام دی برگردین و دستور زیر رو دوباره وارد کنید
netstat -an
اینبار میبینید که پورت 587 توی لیست وجود داره
در شکل بالا دستور netstat -an قبل و بعد از اجرای برنامه نمایش داده شده
یعنی این پورت بازه
میتونید ھر پورتی رو به این شکل باز کنید
بعد از تست ھم نگران بستن پورت نباشید چون بعد از بستن برنامه پورت ھم دوباره بسته میشه
ایرانی همیشه سرافراز