مشاهده نسخه کامل
: برنامه نویسی تحت شبکه با سی!!!!!
samasara
20-09-2012, 09:34
در این جا هر کسی میتونه هر چی از برنامه نویسی تحت شبکه در سی می خواد بپرسه و یا مطالبشو بگذاره!!! در ضمن منظور از سی همون c/c++torbo قدیمیه نه این ژیگول که تازه اود(c.#)!!!!
Expert32
20-09-2012, 14:31
سلام.
میشه برای من ارسال چند بایت رو با توابع winsock توسط پروتکل UDP توضیح بدید؟
samasara
20-09-2012, 16:03
ببین دوست عزیز برای درک بهتر بهتره بصورت مختصر با شبکه آشنا باشی ! که مطالب زیاده و در دست رسه!!!
خلاصه:
سوکت دونوع داریم سوکت استریم که در اتصال ایمن ازش استفاده می شه که هون tcp , و سوکت دیاگرام که نامطمئن و بدون اتصاله که برای سرعت بیشتر برای انتقال صدا و تصویر ازش اصتفاده می شه!!!
در حقیقت تابعه h.winsock میاد بدون در گیری با مفاهیم پیچیده تقاضای ایجاد فضا رو به سیستم میده !!
برای این سبک برنامه نویسی باید هم برنامه ی سرور رو داشت هم کلای. رو کلایت به سرور تقاضا میده و برنامهی سرور متناسب با اون میاد پاسخ میده !!!
در برنامه ی سرور شما باید اول یه درخواست ارتباط به سیستم عامل بدین در همین مرحله باید نوع ارتباط خودتون رو که می خواهید از udp استفاده کنید رو بدید البته بیشتر از tcp استفاده میشه!!
توسط تابع bind پورتآدرس بدید این کار درحقیقت اطلاعاتو از پشته ی پروتکل به برنامه منتقل میکنه!!!((اینو دیگه خیلی خیلی مختصر گفتم)
و شروع کار مورد علاقه ی من رو دستور میدید همون فل گوش
بعد از دستور recv() برای دریافت و send() برای ارصال اتفاده کنید البته این یادم رفت که باید قبلش یک ارتباط رو به برنامه نسبت بدید با دستور !!!! دستور لجبازیه اما کاملا کار بردی!!!!
چون ارتباط یه طرفه است با دستور shotdown (از udp) از کلایت برنامه تموم میشه!!!!
samasara
20-09-2012, 16:15
راستی از فردا درس و دانشگاه شروع میشه!!! دیگه وقت برای جواب دادنا خیلی کم می شه و ممکنه مدت جواب دادن طولانی بشه پس هر کس جواب رو میدونه بگه و هر کسی هم هر سوالی داشت مطرح کنه یکی بلده جواب میده یکی بلد نیست یاد می گیره!!! در ضمن منم عقل کل نیستم پس اشتباهاتمو بگیرید و جواباتونو بدید تا همه از ان جا اسفاده کنیم!!!
Expert32
20-09-2012, 22:01
دوست عزیز من با مفاهیم شبکه آشنا هستم بیشتر میخواستم با کد نویسی یک مثال بزنید.
در کل دستتون درد نکنه.
samasara
21-09-2012, 07:33
این کد سرور رو الان نوشتم توضیح فقط اینکه برای سادگی و همه فهم بودن از پردازش اخطار ها پشم پوشی کردم و اینکه برنامه ی کلای با خودتون کار برنامه هم منتظر در یافت می مونه به محض در یافت بسته نمایش می ده خیلی خیلی سعی کردم ساده باشه اما شما خودتون م تونید بهترش کنید البته من از همون udp یا دیاگرام کد کردم شما بهتر از tcp همیشه استفاده کنید خیلی در امنیت برنامه تاثر گذاره. این رو با gcc کامپایل کنید!!!!
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
samasara
22-09-2012, 09:19
انشا الله بعدا هر بخش رو مفصلا با توضیح توابع مربوطه توضیح میدم! فعلا رو همین کار کنید !! شما هم اگه اطلاعاتی کلا در ضمینه سی که کمتر به اون پرداخته شده بفرمایید!!!
Expert32
22-09-2012, 15:03
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دوست عزیز این چیزی که شما نوشتی دقیقا چیکار میکنه؟
الان متغییر buf کجا تعریف شده؟
پلتفرم اجرایی برای این کد چیه؟ یعنی روی چه سیستم عاملی میشه کامپایلش کرد؟
TCP/IP هم یک پروتکل استاندارد هست و فکر نمیکنم سیستمی باشه که این پروتکل رو نشناسه!
چندتا غلط نوشتاری هم داخلش هست!
samasara
22-09-2012, 16:42
دوست عزیزم سوکت برای شبکه ها با پروتوکل های دیگه به صورت معادل در نظر گرفته شده بنا براین باید بگونه ای ساختمان رو ایجاد کرد که در همه ی پروتوکل های شبکه قابل استفاده باشه و آفرین به نکته بینی شما اما دقت کنید که من نگفتم اونو نمیشناسه بلکه گفتم اون از اون استفاده نمی کنه اما اگر به صورت تخصصی ت ه قضیه نگاه کنیم ان کار برای اینه که طور ادرس پورت (2 بایتی) و طول ادرس ip (4 بایتی) که این در حالی که در شبکه های مختلف این حالت متفاوته !! فکر کنم توضیح کامل و دقیقی داده باشم....
درباره ی غلط هی نوشتاری حق با شماست بله چنتایی گذاشتم ببینم کی حال خوندنشو اصلا کسی علاقه داره یا فقط دوستان میبنن و رد می شن!!!!
اما در باره buf این همون بافره که با char تعریف شده این یکی رو عمدی نگذاشته بودم چون معمولا من buf برای این کار در نظر می گرفتم. این یکی دیگه اشتباه شد ببخشید!!!!!!!!!!!!!!!
دوتا سوال باقی مونده رو توی پست قبل وجود داره!!! در ضمن خود کد هم میگه چی کار می کنه!
آفرین آفرن و بازم آفرین!! بازم اگر سوالی بود بگید یا مطلبی اشکالی ... بود بفرمایید انشاالله هم udp و tcp هر دو رو کامل با توابع مربوط و شاید چند مثال شبکه ای با حال که با هم طراحی می کنیم بزارم !!
Expert32
22-09-2012, 21:44
دوست عزیزم سوکت برای شبکه ها با پروتوکل های دیگه به صورت معادل در نظر گرفته شده بنا براین باید بگونه ای ساختمان رو ایجاد کرد که در همه ی پروتوکل های شبکه قابل استفاده باشه و آفرین به نکته بینی شما اما دقت کنید که من نگفتم اونو نمیشناسه بلکه گفتم اون از اون استفاده نمی کنه اما اگر به صورت تخصصی ت ه قضیه نگاه کنیم ان کار برای اینه که طور ادرس پورت (2 بایتی) و طول ادرس ip (4 بایتی) که این در حالی که در شبکه های مختلف این حالت متفاوته !! فکر کنم توضیح کامل و دقیقی داده باشم....
تشکر از توضیحی که دادید.
من دقیقا میدونم اون خط از کد چکاری انجام میده و بیشتر میخواست از شما بپرسم تا ببینم شما چه جوابی میدید. اون خط مربوط میشه به بحث Big/Little Endian که مربوط به CPU های مختلف میشه و هیچ ارتباطی هم با TCP/IP نداره بلکه شامل همه جور اطلاعاتی که تحت شبکه و از سیستمی به سیتم دیگر منتقل میشود (شامل سیستم هایی با CPU های مختلف) میشه.
--------------------------
و چیز دیگری که میخواستم بگم اینکه این کدهایی که شما نوشتید کار خاصی رو انجام نمیدن یعنی نه دریافت و نه ارسال اطلاعات و فقط میشه گفت یک کد ناقص هست که مضمون خاصی از نظر آموزشی هم حداقل برای من نداشت.
تشکر.
samasara
22-09-2012, 22:07
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این خط نمام متغیر داخل خودشرو صفر می کنه!! بازم آفرین(اما در شبکه حالتLittle در تعریف می کنند تا صفر ها دیگه خونده نشده و متغیر بیت اول پر ارزش و بیت آخر هم کنم ارزش می شود تا سرعت خوانایی بیشتر بشه! )
جزو مبا حث مهندسیاینترنت ازش استفاده کردیم !
این پروتکل نیازی به ار تباط دوطرفه نداره در پست اول هم گفتم این یه برنامه ی سرور که منتظر در خواست کلای می شه و هرچی رو که روی پورت اومد رو نشون میده کامل شدش رو برات پخ کردم!!
(چون باعث سوال ها بیشتری میشه!!)
این برنامه به پیچ عنوان بنامه به بیکار نیست فقط یه برنامه ی چت ساده می شه بهش گفت البته که سی این قدرت روداره اما هدف های خاصی رو فرستاد به مباحث پیشرفته ی بر می گرده اما ما این برای -- و ارتقای امتیه در برنامه نویسی می کنیم!!!
Expert32
22-09-2012, 22:26
این خط نمام متغیر داخل خودشرو صفر می کنه!!
ما بحثمون راجب کار کلی اون قسمت بود.
این پروتکل نیازی به ار تباط دوطرفه نداره در پست اول هم گفتم این یه برنامه ی سرور که منتظر در خواست کلای می شه و هرچی رو که روی پورت اومد رو نشون میده کامل شدش رو برات پخ کردم!!
(چون باعث سوال ها بیشتری میشه!!)
این کدهایی که شما گذاشتی عملا هیچ کاری انجام نمیده. و چیزی هم که شما میگی اسمش sniffer هست نه سرور. سرور ها معمولا روی پورت خاصی منتظر میمونن نه همه ی پورتها)
این برنامه به پیچ عنوان به گرافیک مربوط نمیشه فقط یه برنامه ی چت ساده می شه بهش گفت البته که سی این قدرت روداره اما هدفم از شروع کردن این مباحث پیشرفته ی -- و ارتقای امتیه در برنامه نویسه!!!
خوب من که یادم نمیاد صحبتی از گرافیک کرده باشم!
samasara
22-09-2012, 22:41
خوب من که یادم نمیاد صحبتی از گرافیک کرده باشم!
پست قبلی ویرایش شد!!
این کدهایی که شما گذاشتی عملا هیچ کاری انجام نمیده. و چیزی هم که شما میگی اسمش sniffer هست نه سرور. سرور ها معمولا روی پورت خاصی منتظر میمونن نه همه ی پورتها)
این روی همه پروتا کار نمی کنه اول تقاضای یه مسیر معلق سفارش می ده در صورت وجوب ادامهی کار انجام می شه این کد خیلی سادست فکر نمی کردم این قدر با عث سوال بشه درسته باید فال گوش وایسته اما ساختار udp این امکان رو به ما میده که این کا رو انجام بدیم و یه پورت ثانوی در نظر بگیریم اما در روش tcp ما با ید حتما از دستور های کانکت و لیسینگ استفاده کنیم همون جور که ایمیلا دارن این کار رو انجام می دن!!
samasara
22-09-2012, 23:51
خوب شاید سطح شما بالا از دانش من باشه و من فقط دارم الکی باشما جدل می کنم! اگر این طوره واقعا باعث خوشحالی منه که شما بعضی از مشکلاتمو بگیرید چون واقعا کمند کدر های حرفه ای بازم اگر اشکالی مد نظر تون اومد بگید:)
samasara
23-09-2012, 08:36
در ادامه از ابتدا به مواردی از شبکه که در برنامه نویسی به اون نیازه می پدازیم تا برای دوستان تازه کار مشکلی پیش نیاد بعد میریم سراغ کد ها و توضیح اونا!!
samasara
23-09-2012, 08:37
در ادامه از ابتدا به مواردی از شبکه که در برنامه نویسی به اون نیازه می پدازیم تا برای دوستان تازه کار مشکلی پیش نیاد بعد میریم سراغ کد ها و توضیح اونا!!:)
samasara
29-09-2012, 12:34
اول : الان دیگه می ریم سراغ قسمت جذاب و دوستاشتنی:
سوکت چیست؟ یک مفهوم انتزاعی از تعریف ارتباط در سطح برنامه نویسی است. یعنی شما بصورت کاملا راحت با تعریف سوکت در خواست خود را برای تبادل اطلاعات به سیستم می دهید و خود را در دنیای tcp or udp محل ها و فضا های مورد نظر را ایجاد کند
سوکت های مهم 1- دیاگرام: سوکت های بدون اتصال 3 معروفتد این سوکت از روش udp (همان که در مثال قبل ذکر شد) هیچ اطمینانی در مسیر داده ها و جود نخواهد داشت و کاملا نامطمئن!!!!!
--------------- 2- استریم: به سوکت های اتصال گرا 2 معروفند این سوکت از روش ارسال tcp استفاده می کنه یعنی با نظارت بر خطالی احتمالی و رعایت ترتیب و مطمئن داده ها ارسال م شوند.(مثال FTP ,HTTP , SMTP)
دوم بگذارید یک سری از مواردی که با آنها شوخی ندارم را بنویسم:
نکته----> شما می توانید هم زمان یک یا چند سوکت باز و با چند سیستم راه دور خاص مبادله ی بسته داشته با شید!!!
نکته ---> برنامه نویسی تحت شبکه با سی کاملا با لایه چهرم یعنی لایه ی کاربرد سر و کله می زند یعنی در لایه ی کاربد تعریف می شود!!!(یعنی اگر هم این قابلیت رو داره من بلد نیستم پس اگر می دوند حتما بگید!!)
نکته ---> منظور من از مبادله اظلاعات از سوکت باز همون مبادله ی داده ای بین دونقطه ی tsap روی سیستم شبکه رایانه ای است!!!
خوب واقعا من خیلی خسته شدم توی این چند وقته و فرصت نوشتن کم پیدا کردم و اگر سرعت دستم توی تایپ بالا بود الان خیلی بیشتر براتون می نوشتم فکر کنم برای دوستان سی پرست سرنخ های خوبی برای تحقیق گذاشتم
حالا شما تحقیق کنید و مطالب رو کامل بگذارید
راستی منبع هم --> a to z c و --->مقاله ی مهندس احسان ملکیان در کتاب امنیت و ضد امنیت و کتاب مهندسی اینترنت احسان ملکیان و C جعفر نژاد و رنامه نوسی پیشرفته با سی سرابی میانجی و کتاب TCP/IP Sockets in C
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.