zingbust
asked on
Winsock Control - Control array DataArrival event
Hi,
I'm trying to create a simple server application that will accept incoming data from a client application. I'm trying to do what the examples say to do on pp 174-176 of the VB Components Tool Guide (using the Winsock Control). I need to be able to accept more than 1 connection request at a time, so I'm trying to create a control array as follows...
Private intMax As Long
Private Sub Form_Load()
intMax = 0
tcpServer(0).LocalPort = 2345
tcpServer(0).Listen
End Sub
Private Sub tcpServer_ConnectionReques t _
(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load tcpServer(intMax)
tcpServer(intMax).LocalPor t = 0
tcpServer(intMax).Accept requestID
Load txtData(intMax)
End If
End Sub
...so far so good. I've followed instructions by setting the index property of tcpServer to 0 which supposedly creates the array. I also did likewise with txtData. I'm not sure if txtData is supposed to display the incoming data from the client, but I'm assuming it is. The instructions don't say.
Now I complete the scenario by including the event procedure for the arrival of the data...
Private Sub tcpServer(intMax)_DataArri val(ByVal bytesTotal As Long)
' Declare a variable for the incoming data.
' Invoke the GetData method and set the Text
' property of a TextBox named txtOutput to
' the data.
Dim strData As String
tcpServer(intMax).GetData strData
txtData(intMax).Text = strData
End Sub
...and I get a compiler error saying that the underscore in the procedure declaration is an invalid character. ((inMax)_DataArrival). If this is invalid then why is it not also invalid in scalar context...
Private Sub tcpServer_DataArrival(ByVa l bytesTotal As Long) ???
...If I leave out the (intMax), I get an error that states that the Procedure declaration does not match the description of event or procedure having the same name. How should I handle this?
I'm trying to create a simple server application that will accept incoming data from a client application. I'm trying to do what the examples say to do on pp 174-176 of the VB Components Tool Guide (using the Winsock Control). I need to be able to accept more than 1 connection request at a time, so I'm trying to create a control array as follows...
Private intMax As Long
Private Sub Form_Load()
intMax = 0
tcpServer(0).LocalPort = 2345
tcpServer(0).Listen
End Sub
Private Sub tcpServer_ConnectionReques
(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load tcpServer(intMax)
tcpServer(intMax).LocalPor
tcpServer(intMax).Accept requestID
Load txtData(intMax)
End If
End Sub
...so far so good. I've followed instructions by setting the index property of tcpServer to 0 which supposedly creates the array. I also did likewise with txtData. I'm not sure if txtData is supposed to display the incoming data from the client, but I'm assuming it is. The instructions don't say.
Now I complete the scenario by including the event procedure for the arrival of the data...
Private Sub tcpServer(intMax)_DataArri
' Declare a variable for the incoming data.
' Invoke the GetData method and set the Text
' property of a TextBox named txtOutput to
' the data.
Dim strData As String
tcpServer(intMax).GetData strData
txtData(intMax).Text = strData
End Sub
...and I get a compiler error saying that the underscore in the procedure declaration is an invalid character. ((inMax)_DataArrival). If this is invalid then why is it not also invalid in scalar context...
Private Sub tcpServer_DataArrival(ByVa
...If I leave out the (intMax), I get an error that states that the Procedure declaration does not match the description of event or procedure having the same name. How should I handle this?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Or even like this ...
Private Sub tcpServer_DataArrival(Inde x as integer, ByVal bytesTotal As Long)
tcpServer(index).GetData txtData(index).Text
End Sub
Private Sub tcpServer_DataArrival(Inde
tcpServer(index).GetData txtData(index).Text
End Sub
I might also suggest caution in handling the results in txtData(index).Text the actual string you get returned may be suffixed with garbage which happens to be left in the recieve buffer so I'd improve the above like this to safeguard:
Private Sub tcpServer_DataArrival(Inde x as integer, ByVal bytesTotal As Long)
tcpServer(index).GetData txtData(index).Text
txtData(index).Text = left$(txtData(index).Text, bytesTotal)
End Sub
Private Sub tcpServer_DataArrival(Inde
tcpServer(index).GetData txtData(index).Text
txtData(index).Text = left$(txtData(index).Text,
End Sub
Private Sub tcpServer_DataArrival(Inde
' Declare a variable for the incoming data.
' Invoke the GetData method and set the Text
' property of a TextBox named txtOutput to
' the data.
Dim strData As String
tcpServer(index).GetData strData
txtData(index).Text = strData
End Sub