VB6 Telnet Winsock Run-Time Error '40006'

I am using the following code -

Private Sub Connect_Click()
    Winsock1.Connect ("192.168.1.1"), 23
    Winsock1.SendData "admin" & vbCrLf
End Sub

and basically get the error - Run-Time Error '40006'

I can avoid this error by having two seperate buttons, one to connect and one to issue the SendData command, or by using the following function -

Private Sub Winsock1_Connect()
   Winsock1.SendData "admin" & vbCrLf
End Sub

But I do not want to use either of these methods, I just want everything to be included in the one button.

Please help!
souldigitalAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

ZhaolaiCommented:
You have to wait for the connection to be completed before sending data.
Try this:


Private Sub Connect_Click()
    Winsock1.Connect ("192.168.1.1"), 23
    Do While Winsock1.State = sckConnected
        Winsock1.SendData "admin" & vbCrLf
        Exit Do
    Loop
End Sub

Open in new window

0
ZhaolaiCommented:
Oooop, a mistake in the loop.
Try this:


Private Sub Connect_Click()
    Winsock1.Connect ("192.168.1.1"), 23
    Do While True
        If Winsock1.State = sckConnected Then
            Winsock1.SendData "admin" & vbCrLf
            Exit Do
        End If
    Loop
End Sub

Open in new window

0
souldigitalAuthor Commented:
This loop creates 100% cpu usage and crashes VB  :-s
0
The Ultimate Tool Kit for Technolgy Solution Provi

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy for valuable how-to assets including sample agreements, checklists, flowcharts, and more!

ZhaolaiCommented:
Aha, I don't think that the code in my above posts will work.
Please refer to the following link:

http://kbalertz.com/Feedback.aspx?kbNumber=183987

It looks like that you have to call the Connect event to send data.
Sorry for the confusion.
0
souldigitalAuthor Commented:
This is the same as using 2 buttons, one to connect and one to execute the command, but instead of using a button to connect it does it on form load which sadly is no good.

??????????????????????????????
0
ZhaolaiCommented:
No, you don't need to have two buttons. The Connect event will fire automatically once the connection is complete.

All you need is a button to initiate the connection. See below:



Private Sub Connect_Click()
    Winsock1.Connect ("192.168.1.1"), 23
End Sub

'This event fires automatically once the connection is complete.
Private Sub Winsock1_Connect()
   Winsock1.SendData "admin" & vbCrLf
End Sub

'You may need the following event to capture any connection error

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    MsgBox "Error occurred: " & Description, vbExclamation, "Connection Error"
End Sub

Open in new window

0
JoeNuvoCommented:
either follow above comment by using the default event _Connect

or

if you sure that the "server" you try to connect to always ready to accept connection.
you may put some delay after you call for connect

' this code, put on top at global variable declare
Private Declare Sub Sleep Lib "Kernel32.dll" (ByVal dwMilliseconds As Long)


Private Sub Connect_Click()
   Winsock1.Connect ("192.168.1.1"), 23

    for i = 1 to 100
       sleep 1   ' try adjust number of loop, or adjust number of sleep time to match your need
       doevents
   next

    Winsock1.SendData "admin" & vbCrLf
End Sub
0
souldigitalAuthor Commented:
Yes it will fire when the connection is complete but I need to issue different commands depending on which button I click.

Button A - Winsock1.SendData "admin" & vbCrLf

Button B - Winsock1.SendData "tx power" & vbCrLf

Button C - Winsock1.SendData "help" & vbCrLf

and so on

So I need it to connect, send the data then disconnect all in one button without using any Sub Winsock1_Connect()

I have tried a timer before with a 10second pause and it still gives the same error. It is almost as if you have to End Sub before the connection is fully established?

I can literally click connect (Button 1) then send a command (Button 2) with no delay and it works fine.
0
ZhaolaiCommented:
Now I see why you want to have all the code in one sub... But unfortunately that's not the way it designed.
Try the following code:


Private iButton As Integer

Private Sub Command1_Click()
    iButton = 1
    ConnectWinsock
End Sub

Private Sub Command2_Click()
    iButton = 2
    ConnectWinsock
End Sub

Private Sub Command3_Click()
    iButton = 3
    ConnectWinsock
End Sub

Private Sub ConnectWinsock()
    Winsock1.Close
    Winsock1.Connect "192.168.1.1", 23
End Sub

Private Sub Winsock1_Connect()
    Select Case iButton
        Case 1: Winsock1.SendData "admin" & vbCrLf
        Case 2: Winsock1.SendData "tx power" & vbCrLf
        Case 3: Winsock1.SendData "help" & vbCrLf
    End Select
End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    MsgBox "Error occurred: " & Description
End Sub

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
souldigitalAuthor Commented:
Perfect, thanks!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.