
پروژه برنامه نویسی شبکه و ارتباط با سرور در Qt – قسمت اول
در این پروژه شما با برنامه نویسی شبکه در محیط کیوتی و تبادل اطلاعات با استفاده از پروتکل http آشنا خواهید شد؛ همچنین کار با کلاسهایی همچون QNetworkAccessManager و QJsonDocument و QPixMap و … و دانلود فایل از روی سرور آشنا خواهید شد.
یک پروژه جدید بسازید به نام MRZX_ir و نام کلاس اصلی آن را zxMain بگذارید و بیس کلاس این برنامه را QMainWindow انتخاب کنید.
هدف :
میخواهیم برنامه ای بنویسیم که کار بر نام کار بری و رمز عبور را وارد میکند و در خواستش را به سرور ارسال میکند در صورتی که این نام کاربری و رمز عبور وجود داشته باشند سرو پاسخ را درقالب یک دیتایی با فرمت json به کلاینت ارسال کند و ما این دیتا را در فرم نمایش دهیم.
طراحی رابط گرافیکی :
ابتدا تمامی اشیا داخل فرم را پاک کنید و سعی کنید فرم زیر را طراحی کنید :

” ایکون ها و تصاویر را درون پوشه img در کنار برنامه قرار دهید و یک resurce file بسازید و این تصاویر را اضافه کنید( اموزش ایجاد ریسورس در کیوت )”
اگر استایل شیت زیر را به برنامه اضافه کنیم نتیجه دیداری بهتری را خواهیم داشت:
QWidget#centralWidget{background:white;}
QPushButton{
background:#03dac6;
color:white;
font-size:14pt;
border:0px;
border-top-left-radius:20px;
border-bottom-right-radius:20px;
}
QPushButton:hover{
background:#41cd52;
}
QLineEdit{
border:1px solid gray;
border-radius:8px;
font-size:14px;
}
QLineEdit:focus{
border:1px solid #03dac6;
}
QLabel#lb_name,QLabel#lb_phone,QLabel#lb_brithday{
border:1px solid gray;
border-radius:8px;
font-size:14px;
}

تنظیم فایل .pro برنامه :
حال رابط کاربری(ui) نسبتا مناسبی ایجاد کرده ایم وقت آن رسید با استفاده از اشیاء موجود در این فرم برنامه خود را بنویسیم.
ابتدا چون قرار است در برنامه از کلاس های مربوط به شبکه مانند QNetworkAccessManager و سی پلاس پلاس یازده استفاده کنیم لازم است این عناوین را با استفاده از خطوط زیر به کامپایلر بگویم. لذا در فایل MRZX_ir.pro خطوط زیر را وارد کنیم:

برنامه نویسی :
کلاس های مورد نیاز جهت برنامه نویسی شبکه در پروژه به شرح زیر هستند:
QNetworkAccessManager
کلاسی است که به برنامه اجازه ارسال درخواست و دریافت پاسخ در شبکه را میدهد.
QNetworkRequest
کلاسی است که کاه درخواست مورد نظر را در خود نگهداری میکند برای ارسال این درخواست از شی ایجاد شده توسط کلاس QNetworkAccessManager استفاده می شود.
QNetworkReply
در این کلاس دیتا و هدری که در پاسخ به یک درخواست از سوی QNetworkAccessManager ارسال شده است را دریافت و در خود نگهداری میکند.
” هر کلاسی که در برنامه قرار است یک آبجکت از آن بسازیم را از طریق دستور #include به برنامه اضافه کنید.”
پس ما در ابتدا به یک عضو جدید برای برنامه خود از جنس QNetworkAccessManager نیاز داریم اسم این عضو جدید را m_manager می گذاریم.
QNetworkAccessManager *m_manager;
یک حافظه برای این آبجکت در کانستراکتور کلاس اصلی برنامه در اختیار میگیریم:
m_manager=new QNetworkAccessManager();
یک متد خصوصی به کلاس اضافه میکنیم به نام send_request() در این کلاس یک شی از نوع کلاس QNetworkRequest ایجاد میکنیم که با استفاده از آن از طریق شی m_manager درخواست خود را ارسال میکنیم.
توجه کنید این درخواست از نوع http است و برای مثال سرور را بر روی لوکال هاست در نظر گرفتیم ؛ برای تست فایلها و پروژه های برنامه نویسی سرور ابتدا آن ها را در سیستم لوکال تست میکنند برای این منظور نرم افزارهایی همچون XAMP و WAMP موجود می باشند که به شما این امکان میدهند سورسهایی که قرار است درون هاست بر روی شیکه اینترنت قرار گیرد را تست و اجرا کنید( در این پروژه از نرم افزار XAMP استفاده شده است).
ادمه دارد ( درقسمت بعد پیاده سازی کامل برنامه را خواهیم داشت )…
دیدگاهتان را بنویسید