View Full Version : حرفه ای: روشی برای اتصال دوباره به winsock
niko2008
جمعه 20 اردیبهشت 1392, 22:11 عصر
با سلام خدمت اساتید محترم
من با کمک winsock یه سیستمی رو کنترل میکنم تا اینجا که مشکلی ندارم ولی مشکل اصلی من اینجاست که وقتی به هر ترتیبی ارتباط من با سیستم قطع شد نرم افزار من دوباره بتونه به صورت خودکار وصل بشه؟
niko2008
شنبه 21 اردیبهشت 1392, 11:22 صبح
آقا کسی نیست جواب بده خواهشا
meys34
شنبه 21 اردیبهشت 1392, 12:31 عصر
بله ، برای این مشکل یک راه حل هست
که تقریبا اکثر برنامه نویس های حرفه ای برای برنامه های تحت شبکه مدنظر قرار میدن
و اون ارسال دیتا (و لو ناچیز در حد یک کاراکتر) در یک بازه زمانی مشخص برای تشخیص ارتباط سالم از مشکوک.
مثلا شما در تایمر برنامه تون می تونید یک تابع رو هر 10 ثانیه یکبار فرا خوانی کنید.
به علاوه اینکه:
کامپوننت وینسوکی که به صورت پیش فرض با نصب ویژوال بیسیک نصب میشه یه مشکلی داره...
برای اطلاعات بیشتر به تاپیک زیر مراجعه کنید: (البته با اجازه از M.T.P (http://barnamenevis.org/member.php?132020-M.T.P) )
قطع شدن ناگهانی کانکشن!! (http://barnamenevis.org/showthread.php?376394-%D9%82%D8%B7%D8%B9-%D8%B4%D8%AF%D9%86-%D9%86%D8%A7%DA%AF%D9%87%D8%A7%D9%86%DB%8C-%DA%A9%D8%A7%D9%86%DA%A9%D8%B4%D9%86!!)
setroyd
شنبه 21 اردیبهشت 1392, 12:32 عصر
اینو شما باید بگی که اگه قطع شد باید timer به کار بیوفته تا دوباره وصل بشه اینجوری میشه .
niko2008
یک شنبه 22 اردیبهشت 1392, 08:02 صبح
اینو شما باید بگی که اگه قطع شد باید timer به کار بیوفته تا دوباره وصل بشه اینجوری میشه .
دوست من میشه یه مثال بزنید؟؟؟
یعنی با این پیشنهاد شما من بیام بعد از قطع لحظه ای کل مراحل انجام شده رو در یه تایمر قرار بدم
setroyd
یک شنبه 22 اردیبهشت 1392, 08:49 صبح
اون سیستمی که شما بهش وصلی رو کاری کن هم چند لحظه یکبار برای شما یک کاراکتر سبک بفرسته در هد یه نوشته خوب وقتی این ارسالها قطع بشه شما متوجه میشی و دستور وصل شدن مجدد میدی .
Naghibi
یک شنبه 22 اردیبهشت 1392, 13:39 عصر
سلام
من تو پروژه هام وقتی یه همچین فرآیندی رو لازم دارم به جای اینکه از Client Socket programming استفاده کنم از Server Socket programming استفاده می کنم و به جای IP به پورت گوش می کنم. تو این حالت حتی اگه اون سیستم قطع بشه، بعد از وصل شدن دوباره به نرم افزار شما request میده و در حقیقت خودشو دوباره به نرم افزار متصل میکنه.
niko2008
سه شنبه 24 اردیبهشت 1392, 14:46 عصر
سلام
من تو پروژه هام وقتی یه همچین فرآیندی رو لازم دارم به جای اینکه از Client Socket programming استفاده کنم از Server Socket programming استفاده می کنم و به جای IP به پورت گوش می کنم. تو این حالت حتی اگه اون سیستم قطع بشه، بعد از وصل شدن دوباره به نرم افزار شما request میده و در حقیقت خودشو دوباره به نرم افزار متصل میکنه.
با تشکر از استاد محترم یه نمونه مثال میخوام خواهشا؟؟؟!!
M.T.P
سه شنبه 24 اردیبهشت 1392, 17:31 عصر
اگه منظورتون سمت کلاینت هست ، یه تایمر با اینتروال 1000 بگذارید.
آی پی و پورت و اسم ویسنوک رو متناسب با پروژتون عوض کنید.
Private Sub Timer1_Timer()
With Winsock1
If .State <> sckConnected And .State <> sckConnecting Then
.Close
.Connect "127.0.0.1", 80
End If
End With
End Sub
Naghibi
چهارشنبه 25 اردیبهشت 1392, 08:44 صبح
یه نمونه از Server socket programming اینجا براتون گذاشتم104208
niko2008
چهارشنبه 25 اردیبهشت 1392, 22:33 عصر
یه نمونه از Server socket programming اینجا براتون گذاشتم104208
خیلی ممنون استاد ولی من کاربرد تایمرو ندونستم و ip رو چکار کردین؟
Naghibi
پنج شنبه 26 اردیبهشت 1392, 08:15 صبح
سلام
تایمر رو برای نشون دادن داده های سوکت گذاشته بودم، تو این نمونه فراموش کردم کدهاشو بذارم! مهم نیست.
اما در مورد IP، تو این روش به جای کار با IP ها با پورت ها کار میشه.
مثلا اگر داری به یه سری دستگاه سوکت می زنی فقط کافیه پورت اونا رو تو DB ذخیره کنی و به جای اتصال به IP فقط برنامه به اون پورت ها گوش کنه. پورت منطقی منظورمه ها با پورت COM اشتباه نشه. نمیدونم این دستگاهی که باهاش کار می کنین قابلیت رو داره یا نه!
niko2008
جمعه 27 اردیبهشت 1392, 16:14 عصر
سلام
تایمر رو برای نشون دادن داده های سوکت گذاشته بودم، تو این نمونه فراموش کردم کدهاشو بذارم! مهم نیست.
اما در مورد IP، تو این روش به جای کار با IP ها با پورت ها کار میشه.
مثلا اگر داری به یه سری دستگاه سوکت می زنی فقط کافیه پورت اونا رو تو DB ذخیره کنی و به جای اتصال به IP فقط برنامه به اون پورت ها گوش کنه. پورت منطقی منظورمه ها با پورت COM اشتباه نشه. نمیدونم این دستگاهی که باهاش کار می کنین قابلیت رو داره یا نه!
ببخشید اصلا جواب سوال من نبود؟؟؟؟؟؟؟؟؟؟؟
Naghibi
شنبه 28 اردیبهشت 1392, 09:38 صبح
تو این روش به جای کار با IP ها با پورت ها کار میشه!!!!
یعنی روی سوکتی که می خواین باهاش ارتباط داشته باشین یک شماره پورت تنظیم می کنین و همین طور IP سیستم خودتون که نرم افزار رو روی اون اجرا میشه رو به عنوان IP مقصد براش تعریف می کنین
از این طرف هم نرم افزار شما به اون شماره پورت گوش می کنه(Socket.listen)
حالا وقتی ارتباط برقرار باشه اون سوکت هر داده ای که داشته باشه رو به IP مقصدی که براش تعریف شده ارسال میکنه (که در حقیقت میشه IP سیستم شما)
اگر محیطی که دارین باهاشون ارتباط میگیرید این قابلیت رو دارن از این روش استفاده کنین، در غیر این صورت می تونین از روشی که دوستمون M.T.P پیشنهاد دادن استفاده کنین.
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.