Solved

Winsock Visual Basic Question

Posted on 2014-04-13
5
1,184 Views
Last Modified: 2014-04-13
I have a Visual Basic 6 application that I'm writing to connect to two remote micro-controllers.  The micro controllers each have their own IP addresses and ports.  My laptop application has two Winsock controls in a form that I connect and try to read/write data to each controller.  Both controllers are Arduino Ethernets and are programmed to be servers.  My application on my laptop is programmed to connect to each using "sckTCPProtocol".  

Controller 1: Winsock1      192.168.1.100         port 11010
Controller 2: Winsock2      192.168.1.101         port 11011

In my Visual Basic application, I make the connections on loading the app, then I have a timer that I placed the winsock.sendData command in such that I intend to "sendData" periodically to Winsock1 and Winsock2.  Unfortunately, I can't seem to send data to both at the same time.  Both connect but I can't send data to both when running in the same application.  I can comment one and send to the other and vice versa.  But I can't send data to both in the application.  I've tried closing one connection and alternating but that doesn't work.  I don't want to run two separate executables.  

Private Sub Timer1_Timer()
        If Not Winsock2.State = sckConnected Then
                'Winsock2.Connect
                 Winsock2.SendData Packet2
                 'Winsock2.Close
        End If

       
        If Not Winsock1.State = sckConnected Then
                'Winsock1.Connect
                Winsock1.SendData Packet1
                'Winsock1.Close
        End If
End Sub

Any suggestions?  Definitely need help on this one.
0
Comment
Question by:ScottVeitch
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 35

Accepted Solution

by:
Bembi earned 500 total points
ID: 39997474
Have you tried to close the first connection, then put a DoEvents there and then open the second one to send data. DoEvents allows the system to process background task.
0
 
LVL 25

Expert Comment

by:chaau
ID: 39998085
To connect to more than one host you need to create a Winsock array. You do this by setting a different index for each of the controls. Set the Index property of Winsock1 to 0, and Winsock2 to 1, like this:
Winsock1.Index = 0
Winsock2.Index = 1

Open in new window

You can do this in designer, I believe.
0
 
LVL 12

Expert Comment

by:jkaios
ID: 39998165
0
 
LVL 12

Expert Comment

by:jkaios
ID: 39998167
...Or these...

Creating Client/Server Application using Winsock:
   http://www.codeproject.com/Purgatory/winsock.asp

Using the Winsock Control in Client/Server Applications:
   http://www.15seconds.com/issue/010820.htm

Winsock Programming:
   http://www.devx.com/vb2themax/Article/19879/1954?pf=true
0
 

Author Closing Comment

by:ScottVeitch
ID: 39998190
Using the DoEvents definitely worked.  However, I didn't need to close or open any connections.  I just had the DoEvents in the Sub( ) after the first Winsock1.sendData prior to the second Winsock2.sendData.  Works like a champ now.  Thank you very much.
0

Featured Post

SharePoint Admin?

Enable Your Employees To Focus On The Core With Intuitive Onscreen Guidance That is With You At The Moment of Need.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
Computer science students often experience many of the same frustrations when going through their engineering courses. This article presents seven tips I found useful when completing a bachelors and masters degree in computing which I believe may he…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Progress

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question