Toon posts:

[VB] SendData voor Winsock probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik gebruik de volgende functie in mij VB app. Deze VB applicatie fungeert momenteel als XML Socket Server voor een Flash 5 applicatie welke informatie uit het DCN systeem van Philips gaat afbeelden. Vanuit mijn Flash file stuur ik via de XML Socket een xmlstring om te testen. Deze string wordt netjes afgevangen door sckConn.GetData, en ook weer netjes geretourneerd naar de Flash5 app alwaar ik hem weer op mijn scherm ontvang.

Ik heb in onderstaande code een regeltje ge-commented. Nl. het vullen van strData zodat deze de strData die zojuist is binnengekomen overschrijft. De string die binnenkomt is identiek aan de string die Flash meestuurd, toch word de string indien deze uncommented is niet goed verstuurd, want Flash 5 detecteerd deze niet eens als onXML data. Nu is mijn vraag, kan ik strData gewoon als String verzenden bij SendData? Of moet ik hier nog aparte dingen voor doen.
code:
1
2
3
4
5
6
7
8
9
Private Sub sckConn_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String
    Log "Server: " & bytesTotal & " bytes of data ontvangen"
    sckConn.GetData strData, vbString, bytesTotal
    'strData = "<micdata mic3=""3"" mic2=""2"" mic1=""1"" />"
    Log "Server: Data: " & strData
    Log "Server: Verstuur wat data terug: " & strData
    sckConn.SendData strData
End Sub

Hieronder evt de Info mbt de XML Socket in Flash 5
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
on ( release ) {

    server = "127.0.0.1";
    port = 6000;
    sock = new XMLSocket();
    sock.connect(server, port);
    sock.onConnect = onSockConnect;
    sock.onClose = onSockClose;
    sock.onXML = myOnXML;


    function onSockConnect (success) {
        if (success) {
            msg = "Connected to "+server+" on port "+port;
            displayMessage("test");
        } else {
            msg = "There has been an error connecting to "+server+" on port "+port;
        }
    }

    function onSockClose () {
        msg = "Lost connection to "+server+" on port "+port;
    }   

    function myOnXML(doc) {
    var e = doc.firstChild;
    if (e != null && e.nodeName == "micdata") {
        msg = "mic1="+e.attributes.mic1;
        }
    else{msg = "data corruptie? gvd teringzooi";}
    }

Verwijderd

Topicstarter
Volgende stap geprobeerd. Ik heb de string die vanuit Flash 5 komt en met GetData wordt opgevangen eens vergeleken met eenzelfde string alleen in een andere variabele en met de hand gezet.

Wanneer ik deze in het IF statement vergelijk geeft die false terug, terwijl voor het oog deze strings identiek zijn. Heeft iemand enig idee of ik hier iets mis :? Wordt er data verzonden die voor het oog niet zichtbaar is, en dat daarom de vergelijking false teruggeeft?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub sckConn_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String
    Dim strData1 As String
    Log "Server: " & bytesTotal & " bytes of data ontvangen"
    sckConn.GetData strData, vbString, bytesTotal
    strData1 = "<micdata mic3=""1"" mic2=""1"" mic1=""1"" />"
    If (strData = strData1) Then
      Log "Server: Gegevens zijn gelijk"
      Log "strData:" & strData
      Log "strData1:" & strData1
    Else
      Log "Server: Gegevens zijn niet gelijk"
      Log "strData:" & strData
      Log "strData1:" & strData1
    End If
      
    Log "Server: Data: " & strData
    Log "Server: Verstuur wat data terug: " & strData
    sckConn.SendData strData
End Sub

Verwijderd

Topicstarter
An XMLSocket connection may be used to transfer an unlimited number of XML documents between the client and the server. Each document is terminated with a zero byte. When the Flash Player receives the zero byte, it parses all of the XML received since the previous zero byte, or since the connection was established if this is the first message received.
Wellicht dat ik hiermee wat verder ben. In deze specs praat men over het afsluiten met een 0 byte :? Nu zal strData deze waarschijnlijk ook hebben maar hoe kan ik deze zero byte zelf aanmaken :?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Ik ben zelf met Java - Flash bezig geweest. Daar liep ik idd tegen hetzelfde probleem aan. Flash verwacht als einde van een bericht een 0 byte. Hier heb ik uiteindelijk wat classes voor geschreven die ook wel ergens hier op Got te vinden zijn :)..


Heb je trouwens al iets geprobeerd als Chr(0) oid toevoegen aan het eind van je string?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'