[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1227
  • Last Modified:

Winsock Visual Basic Question

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
ScottVeitch
Asked:
ScottVeitch
1 Solution
 
BembiCEOCommented:
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
 
chaauCommented:
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
 
jkaiosCommented:
0
 
jkaiosCommented:
...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
 
ScottVeitchAuthor Commented:
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

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now