PDA

View Full Version : سوال: Handle کردن قطعی ناگهانی شبکه در برنامه VB



odiseh
یک شنبه 26 خرداد 1387, 13:07 عصر
سلام
بهترین و ساخیافته ترین روش Handle کردن قطعی ناگهانی شبکه در برنامه VB چیه؟

mpmsoft
یک شنبه 26 خرداد 1387, 23:05 عصر
دوست عزیز می شه یکم بیشتر توضیح بدی

منظورت کابل شبکه هستش بعد بگو با چی کار می کنی (Winsock-...)

در Winsock زمانی که بصورت ناگهانی ارتباط قطع می شه Event بسته شدن پورت صورت نمی گیره و اون تنها در قطع اتصال خوش بینانه عمل می کنه یهنی زمانی که Disconnect فراخوانی می شه

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

odiseh
دوشنبه 27 خرداد 1387, 16:46 عصر
سلام
مرسی راستش من تا حالا توی برنامه هام از winsock استفاده نکرده ام ولی اگه درست از بقیه صحبتهات متوجه شده باشم، تو تا راه هستش:
1 - اینکه مثلا شماره خطای مربوط به قطعی شبکه چیه و بااون شماره مثل بقیه خطاها ، برنامه رو کنترل کنی.
2- اگه بخواهیم هر چند وقت یه بار Ping کنیم، اینو توی برنامه با VB چطوری با چه دستوری باید انجام بدیم؟
تازه اینWinsock که میگی میشه شما بیشتر یا با یه مثال توضیح بدی که چیکار میکنه؟

بازم ممنون

ASKaffash
دوشنبه 27 خرداد 1387, 18:24 عصر
با سلام
اتفاقا من با ترکیب timer و WinSock این مشکل را حل کردم برای اثبات حرفم کد سمت Client را برایتان قرار میدهم:


Private StartTime As Variant
Private Sub Form_Load()
StartTime = 0
ServerIP = GetSetting(App.Title, "VideoServer", "IP", "172.16.101.107")
Me.Text1.Text = ServerIP
Me.StatusBar1.Panels(3).Text = "Ver=84/04/12"
End Sub
Private Sub Form_Unload(Cancel As Integer)
SaveSetting App.Title, "VideoServer", "IP", Trim(Me.Text1.Text)
End Sub
Private Sub TCPClient_DataArrival(ByVal bytesTotal As Long)
Dim StrData As String
Me.TCPClient.GetData StrData
Me.List1.AddItem BigTime() + " Get " + StrData
Me.List1.ListIndex = Me.List1.ListCount - 1
End Sub
Private Sub Text1_Change()
Call Timer1_Timer
End Sub
Private Sub Timer1_Timer()
If StartTime <> 0 Then
Me.StatusBar1.Panels(2).Text = Val2Time(Timer - StartTime)
End If
If Me.TCPClient.State <> 7 Then
Me.TCPClient.Close
Call NewConnect
End If
Me.StatusBar1.Panels(1).Text = IIf(Me.TCPClient.State = 7, "Ok", "No") + " Connection"
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
If Me.TCPClient.State = 7 Then
Select Case Button.Key
Case "Start"
StartTime = Timer
Case "End"
StartTime = 0
End Select
Me.TCPClient.SendData Button.Key
Me.List1.AddItem BigTime() + " Send " + Button.Key
Me.List1.ListIndex = Me.List1.ListCount - 1
Else
Beep
End If
End Sub
Private Sub NewConnect()
Me.TCPClient.RemoteHost = Trim(Me.Text1.Text)
Me.TCPClient.RemotePort = 1001
Me.TCPClient.Connect
End Sub