PDA

View Full Version : دریافت اطلاعات ارسال شده با پروتوکل http و متد post



dizgah
یک شنبه 20 مهر 1393, 13:51 عصر
با عرض سلام و خسته نباشید
اول خدمتتون عرض کنم که بنده یک مبتدی هستم ، پس اگه جایی از اطلاعاتم باگ داره یا مفهومی رو درست متوجه نشدم به بزرگی خودتون ببخشید و در صورت امکان به صراط مستقیم ارجاع بدین(ممنون : ) )
-----------------------
ببینید ما یک ماژول مخابراتی داریم که قابلیت ارتباط از طریق پروتوکل Http و متدهای اون مثل post و get و ...رو داره .
این ماژول مخابراتی به عنوان کلاینت پیکره بندی شده و قراره به طور مثال یک صد بایت داده رو ارسال کنه.
در این مثال اصلا کاری با برنامه نویسی کلاینت ساید یا همون ماژول نداریم و فرض میگیریم ماژول کانفیگ شده و به طور مثال 100 بایت هگز مثلا 0xfe رو برای سرور ما میفرسته
--------------------
----اهداف:--------
ما نیاز به برنامه ای در سمت سرور داریم که وقتی کلاینت با استفاده از متد post تحت پروتوکل http داده ها رو ارسال کرد ، این n بایت داده (در این مثال 100 بایت 0xfe ) رو دریافت کنه و به نوعی به اپراتور خودش نمایش بده ،
مثلا صفحه وبی رو داشته باشیم که با هربار دریافت دیتا ، اون دیتا ها رو در ائن صفحه وب نمایش بده ، و حالا هر کس آدرس این صفحه رو وارد کنه و واردش بشه بتونه داده های دریافتی رو مشاهده کنه
---------
بنده مدت زیادیه که دارم اینترنت رو میگردم ولی از اون جایی که نیاز من نه در توابع webrequest نیست (چون من درخواستمو میتونم بفرستم و اینجا مشکلی نیس )و نه در قسمت webresponse (چون سرور قرار نیست پاسخی برای کلاینت بفرسته ) واقعا گیج شدم و نمیدونم باید از چه تابعی استفاده کنم

حالا پیشنهاد شما چیه ؟ با چه کلاسی و چه متودی میتونم این کارو بکنم ؟
ممنون:لبخندساده:

alireza_s_84
یک شنبه 20 مهر 1393, 18:07 عصر
با عرض سلام و خسته نباشید
اول خدمتتون عرض کنم که بنده یک مبتدی هستم ، پس اگه جایی از اطلاعاتم باگ داره یا مفهومی رو درست متوجه نشدم به بزرگی خودتون ببخشید و در صورت امکان به صراط مستقیم ارجاع بدین(ممنون : ) )
-----------------------
ببینید ما یک ماژول مخابراتی داریم که قابلیت ارتباط از طریق پروتوکل Http و متدهای اون مثل post و get و ...رو داره .
این ماژول مخابراتی به عنوان کلاینت پیکره بندی شده و قراره به طور مثال یک صد بایت داده رو ارسال کنه.
در این مثال اصلا کاری با برنامه نویسی کلاینت ساید یا همون ماژول نداریم و فرض میگیریم ماژول کانفیگ شده و به طور مثال 100 بایت هگز مثلا 0xfe رو برای سرور ما میفرسته
--------------------
----اهداف:--------
ما نیاز به برنامه ای در سمت سرور داریم که وقتی کلاینت با استفاده از متد post تحت پروتوکل http داده ها رو ارسال کرد ، این n بایت داده (در این مثال 100 بایت 0xfe ) رو دریافت کنه و به نوعی به اپراتور خودش نمایش بده ،
مثلا صفحه وبی رو داشته باشیم که با هربار دریافت دیتا ، اون دیتا ها رو در ائن صفحه وب نمایش بده ، و حالا هر کس آدرس این صفحه رو وارد کنه و واردش بشه بتونه داده های دریافتی رو مشاهده کنه
---------
بنده مدت زیادیه که دارم اینترنت رو میگردم ولی از اون جایی که نیاز من نه در توابع webrequest نیست (چون من درخواستمو میتونم بفرستم و اینجا مشکلی نیس )و نه در قسمت webresponse (چون سرور قرار نیست پاسخی برای کلاینت بفرسته ) واقعا گیج شدم و نمیدونم باید از چه تابعی استفاده کنم

حالا پیشنهاد شما چیه ؟ با چه کلاسی و چه متودی میتونم این کارو بکنم ؟
ممنون:لبخندساده:

خب شما باید یک برنامه بنویسی که روی پورت مورد نظر (پورتی که کلاینت به اون داده ها رو اراسل میکنه) گوش بده و پس از دریافت اطلاعات اونها رو تجزیه و تحلیل کنه. حالا داده های تجزیه و تحلیل شده رو توی پایگاه داده ثبت میکنه. در نهایت شما یک وب سایت ساده راه میندازی طرف وارد وب سایت میشه ، اطلاعات از پایگاه داده واکشی شده و به اون نمایش داده میشه. واسه اینکه هم اطلاعات رو بطور بلادرنگ بهش نمایش بدی میتونی از سیگنال آر استفاده کنی.
برای اینکار هم در برنامه ی سمت سرور که در معمولا از نوع کنسول هست شما نیاز به کلاس Socket داری یا کلاسهای ساده تری مثل TcpClinet و ... که کار به اونها چندان سخت نیست.
کلاس های کار با دیتابیس که اونها هم بستگی به نوع پایگاه داده تون داره.

dizgah
یک شنبه 20 مهر 1393, 19:24 عصر
سلام و ممنون از لطفتون:
البته ماژول از پروتوکل tcp/ip هم پشتیبانی میکنه
انتخاب پروتوکل http برای پیاده سازی راحت تر بوده که گویا طبق فرمایشات شما فرق خاصی با همون tcp/ip نداره (که توش باید از برنامه نویسی سوکت استفاده میکردیم )
اما مطلبی که من متوجهش نمیشم این کار در واقع همون عمل روتین وب سرورهاست ، پس قاعدتا باید یک کلاس یا متد آماده برای خوندن داده های دریافتی (ارسال شده با post) وجود داشته باشه دیگه
ولی چرا این طور نیست ؟