saber

با سلام . می خواستم بدانم دو تا کامپیوتر شبکه شده چگونه با استفاده از کنترل Winsock در ویژوال بیسیک...

با سلام . می خواستم بدانم دو تا کامپیوتر شبکه شده چگونه با استفاده از کنترل Winsock در ویژوال بیسیک که بر روی هردو دستگاه نصب شده است کار ساده انتقال فایل را انجام داد . یعنی انتقال یک فایل از دستگاه...
Thursday, April 7, 2011
الوقت المقدر للدراسة:
موارد بیشتر برای شما

saber

با سلام . می خواستم بدانم دو تا کامپیوتر شبکه شده چگونه با استفاده از کنترل Winsock در ویژوال بیسیک...

saber ( تحصیلات : فوق دیپلم ، 19 ساله )

با سلام . می خواستم بدانم دو تا کامپیوتر شبکه شده چگونه با استفاده از کنترل Winsock در ویژوال بیسیک که بر روی هردو دستگاه نصب شده است کار ساده انتقال فایل را انجام داد . یعنی انتقال یک فایل از دستگاه...


مشاور: روابط عمومي راسخون

با سلام و تشکر کنترل winsock به شما اجازه می دهد که به یک ماشین راه دور متصل شده و داده ها را با استفاده از پروتکل udp و tcp مبادله کنید . هر دو پروتکل می توانند برای برنامه های کلاینت سرور شوند . مانند کنترل timer این کنترل هم در زمان اجرا دیده نمی شود . موارد استفاده : ساختن یک برنامه که اطلاعات کاربر را قبل از ارسال به سرور جمع آوری می کند . ساختن یک برنامه سرور که به عنوان یک نقطه مرکزی یک مجموعه برای داده های چندین کاربر می باشد . ساختن یک برنامه chat . انتخاب یک پروتکل : وقتی از کنترل winsock استفاده می کنید ، باید به این مسئله رسیدگی کنید که کدام یک از پروتکل های udp و tcp را می خواهید استفاده کنید . تفاوت اصلی بین این دو حالت اتصال آن ها می باشد : پروتکل tcp یک پروتکل اتصال پایه است و مانند تلفن کاربر باید قبل از اقدام به ارسال اطلاعات یک ارتباط ایجاد کند . پروتکل udp یک پروتکل بدون اتصال است و مبادله اطلاعات بین دو کامپیوتر مانند ارسال پیغام است : یک پیغام از یک کامپیوتر برای یکی دیگر ارسال می شود اما ارتباط بین آن دو واضح نیست . حداکثر اندازه داده ارسال شده بصورت منفرد ، بوسیله شبکه تعیین می شود . طبیعتآ برنامه ای که خواهید ساخت ، عمومآ تعییین می کند که چه پروتکلی را انتخاب کنید . در اینجا تعدادی سوال مطرح شده است که می تواند به شما در انتخاب پروتکل برای برنامه کمک کند : 1 - آیا برنامه شما وقتی که پیغامی را دریافت یا ارسال می کند به پیغام تصدیق از طرف سرور و یا کاینت احتیاج خواهد داشت ؟ اگر داشت برای برقراری یک اتصال ، صریح به پروتکل ، tcp احتیاج دارید . 2 - داده های شما خیلی بزرگ هستند ( مانند یک فایل تصویری یا صوتی ) ؟ هنگامی که یک اتصال ساخته شد پروتکل tcp اتصضال را نگه می دارد و از درستی داده ها مطمئن می شود . این اتصال ، هر چند که کاربر منابع بیشتری را پزیرش می کنند ، آن را هزینه بر می سازد . 3 - داده ها بطور متناوب ارسال می شوند یا در یک نشست ؟ برای مثال اگر شما برنامه ای ساخته اید که پس از اتمام وظایف به کامپیوتر ها هشدار می دهد ، پروتکل udp به نظر شایسته تر خواهد بود . پروتکل udp برای ارسال مقادیر کمی از داده استفاده بیشتری دارد . تنظیم پروتکل : برای تنظیم پروتکلی که برنامه شما از آن استفاده خواهد کرد : در حالت طراحی ، در پنجره خواص ، روی protocol کلیک کنید و یکی از دو حالت sck tcpprotocol یا sck udpprotocol را انتخاب کنید . شما اغلب می توانید خاصیت protocol را در کد تنظیم کنید مانند مثال زیر : Winsock1.protocol = scktcpprotocol مشخص کردن نام کامپیوتر شما : برای اتصال به یک کامپیوتر دور شکا باید بدانید ip و یا نام دوستانه آن را بدانید . آدرس ip یک سری از عددهای سه رقمی است که بوسیله نقطه از یکدیگر جدا شده اند . بخاطر سپردن نام دوستانه یک کامپیوتر بسیار ساده تر از ip آن خواهد بود . برای پیدا کردن نام دوستانه کامپیوترتان : 1 - دکمه start را کلیک کنید . 2 - در گزینه seting روی control opanel کلیک کنید . 3 - روی آیکون network کلیک کنید . 4 - برگه identification را کلیک کنید 5 - نام کامپیوترتان را در جعبه متن computer name پیدا خواهید کرد . وقتی شما نام کامپیوترتان را پیدا کردید می توانید آن را برای مقدار دهی به خاصیت remotehost استفاده کنید . اصول اتصال tcp : وقتی که یک برنامه کاربردی می سازید که از پروتکل tcp استفاده می کنید شما باید ابتدا تصمیم بگیرید که برنامه سرور خواهید بود یا کلاینت . ساختن سرور بدین معنی که برنامه شما باید به پورت تعیین شده گوش خواهد داد . وقتی کلاینت درخواست اتصال می کند سرور می تواند با درخواست موافقت کند و از آن طریق اتصال را کامل کند . هرگاه اتصال کامل شد، کلاینت و سرور می توانند آزادانه با یکدیگر در ارتباط باشند . مکراحا زیر برای ساختن یک سرور ابتدایی است : 1 - ساختن یک پروزه از نوع standard exe 2 - نام پیش فرض فرم را به frmserver تغییر دهید 3 - عنوان فرم را به tcp server تغییر دهید 4 - یک کنترل winsock را روی فرم بیندازید و نام آن را به tcp server تغییر دهید 5 - دو textbopx روی فرم قرار دهید . نام یکی را twxtsenddata و یکی را text output بگذارید 6 - کد زیر را به فرم اضافه کنید خاصیت localport ، شماره پورت را برای تبادل داده تعیین می کند . با اجرای متد listen سرو شرور شروع به گوش کردن به پورت می دهد . گوش کردن به معنای زیر نظر داشتن پورت برای رسیدن درخواست می باشد . متد send data برای ارسال داده بکار می رود . متد Accept برای اعلان قبول داشتن بکار می رود . متد close اتصال را خاتمه می دهد . رویداد connectionrequest وقتی روی می دهد که یک ماشین راه دور درخواست اتصال داشته باشد . رویداد dataarrival وقتی روی می دهد که داده ای جدید رسیده باشد . کد هایی که در بالا آورده شده است یک برنامه ساده سرور را می سازد . اما برای کامل شده سناریو شما باید یک برنامه کلاینت را هم بسازید . مراحل زیر را برای ساختن یک برنامه کلاینت انجام دهید : 1 - یک فرم جدید به پروژه اضافه کنید و نام آن را frm client بگذارید . 2 - عنوان فرم را به tcp client تغییر دهید . 3 - یک کنترل winsok به فرم اضافه کنید و نام آن را tcp client بگذارید . 4 - به فرم جدید دو عدد textbox اضافه کنید . 5 - یک commandbutton روی فرم قرار دهید و نام آن را cmdconnect بگذارید . 6 - عنوان commandbutton را به connect تغییر دهید . 7 - کد زیر را به فرم اضافه کنید . مطمئن شوید که مقدار خاصیت remotehost که در کد مقدار آن را remot computer name قرارداده ایم ، را به نام دوستانه کامپیوترتان ست کرده اید . خاصیت remothost نام دوستانه ماشین راه دور است . خاصیت remotport شماره پورتی است که از آن طریق می خواهیم داده ها را می خواهیم برای ماشین راه دور بفرستیم . متد connect اتصال را برقرار می کند . متد getdata یک بلاک از داده ها را بازیابی می کند . کدهای بالا یک برنامه کلاینت _ سرور ساده را می سازد . برای استفاده از آن برانامه را اجرا کنید و روی کلید connect کلیک کنید . سپس متنی را در textsenddata تایپ کنید . همان متن را در textoutput مشاهده خواهید کرد . پذیرش بیش از یک درخواست اتصال : سرور ابتدایی که در بالا به ساخت آن اشاره شد فقط یک درخواست اتصال را می پذیرد . پذیرش بیش از یک درخواست از طریق ساختن آرایه ای از منترل ها امکان پذیر است . در این قسمت شما لازم نیست اتصالتان را قطع کنید ، اما بسادگی باید یک نمونه جدید از کنترل و ( همچنین ست کردن خاصیت index آن ) بسازید ، و متد accept را در نمونه جدید فراخوانی کنید . در کد زیر یک کنترل winsock روی فرم داریم که نامش sckserver است ، و خاصیت index آن به 0 مقدار دهی شده است ، بنابراین این کنترل قسمتی از یک آرایه یک کنترل است . یک متغییر سطح ماژول با نام intmax تعریف کرده ایم . در رویداد form _ load مقدار متغییر intmax را برابر 0 وخاصیت localport را برای اولین کنترل در آرایه برابر 1001 قرار داده ایم . سپس متد listen کنترل را فراخوانی می کنیم . هم درخواست اتصال که برسد ، ابتدا آن را برای 0 بودن index تست می کند ( مقدار کنترل گوش فرا دهند ) . . اگر برابر باشند ، کنترل گوش فرا دهنده یکی به index اضافه می کند و آن را برای ساختن یک نمونه جدید از کنترل استفاده می کند . نمونه کنترل جدید ساخته شده و سپس برای توافق درخواست اتصال بکار می رود . اصول udp : ساختن یک برنامه مبتنی بر udp از ساختن برنامه ای مبتنی بر tcp آسانتر است زیرا در پروتکل udp نیازی به یک ارتباط آشکار نیست . در برنامه مبتنی بر tcp که ذکر شد یکی از کنترل های winsock می بایست به حالت listen باشد ، در صورتی که کنترل دیگر باید با استفاده از متد connect برای یک اتصال پیکر بندی شود . بطور کلی در پروتکل udp احتیاجی به یک اتصال واضح و روشن وجود ندارد . برای ارسال داده ها بین دو کنترل ، سه مرحله را باید انجام دهید : 1 - خاصیت remothost را برابر نام کامپیوتر دیگر قرار دهید . 2 - خاصیت remotport را برابر مقدار خاصیت localport از کنترل دیگر قرار دهید . 3 - متد bind را با localport بکار برده شده فراخانی کنید ( در ادامه متد bind توضیح داده شده است ) . از آنجا که هر دو کامپیوتر می توانند در این ارتباط اهمیت یکسانی داشته باشند ، می توانیم آن ها را در برنامه های نظیر به نظیر ( peer to peer ) بنامیم . برای نشان داده این مسئله به کد های زیر دقت کنید . این کد یک برنامه chat می سازد که بوسیله آن دو نفر می توانند بصورت realtime با یکدیگر صحبت کنند . برای ساخت یک طرف برنامه udp (peer ) مراحل یزر را انجام دهید : 1 - یک پروژه standard exe بسازید . 2 - نام پیش فرض فرم را به frmpeera تغییر دهید . 3 - عنوان فرم را به peera تغییر دهید . 4 - یک کنترل winsock را روی فرم قرار دهید و نام را udppeera بگذارید . 5 - در صفحه خواص روی خاصیت protocol کلیک کنید و آن را به حالت udpprotocol تغییر دهید . 6 - دو عدد textbox روی فرم بگذارید . نام یکی را به txtsend و دیگری را به فطفخعفحعف تغییر دهید . 7 - کد زیر را به فرم اضافه کنید . توجه کنید که مقدار remotehost را باید برابر نام کامپیوترتان قرار دهید . برای ساخت یک طرف برنامه udp ( peer ) مراحل زیر را انجام دهید : 1 - یک فرم به پروژه اضافه کنید . 2 - نام فرم را به peer b عوض کنید . 3 - عنوان فرم را به peer b عوض کنید . 4 - یک کنترل winsock را روی فرم قرار دهید و نام را udppeerb بگذارید . 5 - - در صفحه خواص روی خاصیت protocol کلیک کنید و آن را به حالت udpprotocol را انتخاب کنید . 7 - کد زیر را به فرم اضافه کنید . فراموش نکنید که مقدار خاصیت remotehost را برابر نام کامپیوترتان قرار دهید . برنامه را اجرا کنید و در جعبه txtsend در فرم خودتان متنی را تایپ کنید . متن شما در جعبه متن درگر در فرم دیگر تایپ خواهد شد . متد bind : در کد بالا نشان داده شد که وقتی می خواهید یک برنامه مبتنی بر udp بسازید باید از متد bind استفاده کنید . متد bind یک پورت را برای استفاده کنترل رزرو می کند . برای مثال وقتی شما یک کنترل را با پورت شماره 1001 bind کردید برنامه های دیگر نمی توانند ار آن پورت استفاده کنند و یا به آن گوش دهند . اگر شما بخواهید مانع استفاده برنامه های دیگر از این پورت شوید این مسئله برایتان مفید خواهد بود . وقتی پروتکل udp را استفاده می کنید شما می توانید آزادانه بین خواص remoteport و remotehost سوئیچ کنید تا وقتی که اتصال به local port باقیمانده باشد ، در صورتیکه در پروتکل tcp شما باید قبل از تغییر remotehost و یا remotepore اتصال را می بستید .



ارسل تعليقاتك
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.