Ik heb hier 2 programmatjes op 2 PCs geschreven. Programma op computer 1 is geschreven in VB6 en leest en visualiseerd 8 XY laser sensoren uit via RS458, dat is allemaal klaar en werkt. Programma op computer 2 is geschreven in VB.NET en moet die waarden over TCP/IP binnenhalen uit computer 1 om ze vervolgens via OPC aan te bieden aan een HMI/SCADA pakket.
Nu wou ik hiervoor de Winsock control gebruiken. Die heb ik dus toegevoegd in mijn VB6 programma. Voor het .NET programma gebruik ik Winsock.NET. De PCs hebben netwerkverbinding en hangen via een switch in een LAN
De code in VB6 om even te testen of ik een string kan over pompen:
De code in .NET om de string binnen te halen:
Het probleem is dat hij verbinding maakt, maar ik datasend niet kan gebruiken. Met een connection state changed event vang ik de volgende gebeurtenissen op (in machine 2, .NET):
Listening => ConnectionPending => Connected.
De machine 1 (met VB6) geeft op het moment dat ik de senddata method gebruik deze foutmelding:
"Run-time error '40006' Wrong protocol or connection state for the requested transaction or request"
Als ik debug en kijk naar wscockData.State dan is die 6.... zegt me niets eigenlijk, volgens google moet daar iets uitkomen als bv sckClosed etc oid?
De XP firewall op machine 2 (.NET, Windows XP) heeft me de eerste keer om toestemming gevraagd toen ik het progsel gecompileerd en gedraaid had, daar heb ik toestemming voor gegeven. Belachelijk genoeg is dat een kantoor machine van hier en kan ik door de grouppolicies even niet de firewall uitzetten, maar zou dat het probleem wel zijn? Machine 1 draaid Windows 2000 en heeft geen firewall. Ik communiceer over tcp poort 30, en aangezien er dus wel een connection request en een connectie plaatst vind denk ik zelf niet aan de firewall.
Welke stommiteit heb ik nu weer over het hoofd gezien?
Nu wou ik hiervoor de Winsock control gebruiken. Die heb ik dus toegevoegd in mijn VB6 programma. Voor het .NET programma gebruik ik Winsock.NET. De PCs hebben netwerkverbinding en hangen via een switch in een LAN
De code in VB6 om even te testen of ik een string kan over pompen:
Visual Basic 6:
1
2
3
4
5
| formMain.wsockData.RemoteHost = xxx.xxx.xxx.xxx formMain.wsockData.RemotePort = 30 formMain.wsockData.Connect formMain.wsockData.SendData "aap" formMain.wsockData.Close |
De code in .NET om de string binnen te halen:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Private Sub netStartCommunicatie() wsockData.LocalPort = 30 wsockData.Listen() End Sub Private Sub wsockData_ConnectionRequest(ByVal sender As Winsock_Control.Winsock, ByVal requestID As System.Net.Sockets.Socket) Handles wsockData.ConnectionRequest wsockData.Accept(requestID) End Sub Private Sub wsockData_DataArrival(ByVal sender As Winsock_Control.Winsock, ByVal BytesTotal As Integer) Handles wsockData.DataArrival Dim strData As String wsockData.GetData(strData) MsgBox(strData) End Sub |
Het probleem is dat hij verbinding maakt, maar ik datasend niet kan gebruiken. Met een connection state changed event vang ik de volgende gebeurtenissen op (in machine 2, .NET):
Listening => ConnectionPending => Connected.
De machine 1 (met VB6) geeft op het moment dat ik de senddata method gebruik deze foutmelding:
"Run-time error '40006' Wrong protocol or connection state for the requested transaction or request"
Als ik debug en kijk naar wscockData.State dan is die 6.... zegt me niets eigenlijk, volgens google moet daar iets uitkomen als bv sckClosed etc oid?
De XP firewall op machine 2 (.NET, Windows XP) heeft me de eerste keer om toestemming gevraagd toen ik het progsel gecompileerd en gedraaid had, daar heb ik toestemming voor gegeven. Belachelijk genoeg is dat een kantoor machine van hier en kan ik door de grouppolicies even niet de firewall uitzetten, maar zou dat het probleem wel zijn? Machine 1 draaid Windows 2000 en heeft geen firewall. Ik communiceer over tcp poort 30, en aangezien er dus wel een connection request en een connectie plaatst vind denk ik zelf niet aan de firewall.
Welke stommiteit heb ik nu weer over het hoofd gezien?
[ Voor 22% gewijzigd door Verwijderd op 23-03-2007 15:54 ]