Results 1 to 2 of 2

Thread: making a winsock timeout routine??

  1. #1

    Thread Starter
    Lively Member Scorpionz's Avatar
    Join Date
    Feb 1999
    Location
    lafayette/kaplan, louisiana, usa
    Posts
    72

    Exclamation

    this is the code for my refresh routine:

    Dim sIdx As Integer
    Dim Y As Integer
    Dim ECHO As ICMP_ECHO_REPLY
    Dim strimcap As String

    sIdx = frmbrowser.lstservers.ListItems.Count

    For Y = 1 To sIdx
    lstate:
    If frmbrowser.lblstate.Caption = "closed" Then
    Set frmbrowser.lstservers.SelectedItem = frmbrowser.lstservers.ListItems.Item(Y)
    frmbrowser.picprogressslide.Visible = True
    UpdateProgress Y / sIdx, frmbrowser
    frmbrowser.lblstatus.Caption = " querying " & frmbrowser.lstservers.SelectedItem.SubItems(1)
    ElseIf frmbrowser.lblstate.Caption = "canceled" Then
    GoTo lstate1
    Else
    Pause 0.1
    GoTo lstate
    End If

    frmbrowser.lblstate.Caption = "open"
    frmbrowser.lstservers.Enabled = False

    Call Ping(Left$(frmbrowser.lstservers.ListItems.Item(Y).SubItems(1), InStr(frmbrowser.lstservers.ListItems.Item(Y).SubItems(1), ":") - 1&), ECHO)
    frmbrowser.lstservers.ListItems.Item(Y).SubItems(2) = ECHO.RoundTripTime

    strimcap$ = frmbrowser.lstservers.ListItems.Item(Y).SubItems(1)
    Let frmbrowser.Winsock1.RemoteHost = Left$(strimcap$, InStr(strimcap$, ":") - 1&)
    Let frmbrowser.Winsock1.RemotePort = Right$(strimcap$, Len(strimcap$) - InStr(strimcap$, ":"))

    frmbrowser.lstplayers.ListItems.Clear
    frmbrowser.lstrules.ListItems.Clear

    frmbrowser.Winsock1.Close
    frmbrowser.Winsock1.Connect
    frmbrowser.Winsock1.SendData "ÿÿÿÿstatus"
    Next

    lstate1:
    If frmbrowser.lblstate.Caption = "closed" Then
    frmbrowser.lstservers.Enabled = True
    frmbrowser.lstservers.SetFocus
    Set frmbrowser.lstservers.SelectedItem = frmbrowser.lstservers.ListItems.Item(1)
    StartAndStopProgress frmbrowser
    If sIdx < 2 Then
    frmbrowser.lblstatus.Caption = " refresh finished. " & sIdx & " server has been queryed."
    Else
    frmbrowser.lblstatus.Caption = " refresh finished. " & sIdx & " servers has been queryed."
    End If
    ElseIf frmbrowser.lblstate.Caption = "canceled" Then
    frmbrowser.lstservers.Enabled = True
    frmbrowser.lstservers.SetFocus
    Set frmbrowser.lstservers.SelectedItem = frmbrowser.lstservers.ListItems.Item(1)
    StartAndStopProgress frmbrowser
    If Y - 2 < 2 Then
    frmbrowser.lblstatus.Caption = " refresh canceled. " & Y - 2 & " server has been queryed."
    Else
    frmbrowser.lblstatus.Caption = " refresh canceled. " & Y - 2 & " servers has been queryed."
    End If
    frmbrowser.lblstate.Caption = "closed"
    Else
    Pause 0.1
    GoTo lstate1
    End If

    i'm wondering, how would i be able to make my winsock control timeout waiting for a responce from the server i sent my data to after a certain about of secs and then goto the next value in the For Y = 1 To sIdx part..


  2. #2
    Retired VBF Adm1nistrator plenderj's Avatar
    Join Date
    Jan 2001
    Location
    Dublin, Ireland
    Posts
    10,359
    Well to do a timeout, execute the Winsock.Connect method, and then also start a timer with a specific interval.
    If the winsock control connects, disable the timer. Otherwise, the timer will fire after some time, in which case you know the control didnt connect.

    Is this what you're trying to do ?

    - jamie
    Microsoft MVP : Visual Developer - Visual Basic [2004-2005]

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width