Seite 1 von 1

XML-Socket Server Datenversand?

Verfasst: 14.01.2005 15:10
von derRaab
Hallo Leute,

ich versuche mir gerade einen Socketserver zu stricken und komme nicht drauf, wie ich einen einfachen XML-String, z. B.: "<testxml/>" versende.

Via SendNetworkString(ConnectionID, String$) geht es nicht, da ich ein Nullbyte am Ende brauche. Oder kann ich das hier irgendwie einfügen?

Via SendNetworkData(ClientID, Buffer, 1000) kann ich mir zumindest im Beispiel der PureBasic Hilfe (NetworkServer.pb) ein an den Server übermitteltes XML-File wieder zurücksenden. Wobei ich glaube, ich muß die Länge noch korrekt einfügen. Wie kann ich die Länge denn ermitteln?

Tut mir leid, ich stehe auf dem Schlauch. :oops:

bye

Verfasst: 14.01.2005 15:47
von bobobo
Wenn der Server/das Programm die Länge bei SendNetworkData nicht
"kennt" wer denn dann bitteschön?

Code: Alles auswählen

;dies hier
SendNetworkString(ConnectionID, "<testxml/>")
;enstpricht wohl dem hier
SendNetworkData( ConnectionID,"<testxml/>",Len("<testxml/>"))
und bei Receivedata muss der Puffer nur groß genug sein oder
per Vergleich des Rückgabewerts mit der angegebenen Pufferlänge
die Daten entsprechend zusammengestückelt werden bis der Sender fertig ist mit Senden.

Verfasst: 14.01.2005 16:33
von derRaab
Danke für den Tipp.

Leider ging es nicht ganz so.

Aber so.

Es geht um das Nullbyte. So wird es mitgesendet:

Code: Alles auswählen

msg.s = "<xmlTEST/>"
SendNetworkData( ClientID, msg, Len(msg)+1)
Gibt es dafür noch eine kürzere Schreibweise? So muß ich ja immer die Länge des Strings kalkullieren. /:->

Vielleicht so ähnlich:

Code: Alles auswählen

SendNetworkString(ClientID, msg + Chr(0))
So geht es natürlich nicht.


bye

Verfasst: 14.01.2005 16:58
von bobobo
für sowas gibt es proceduren

Verfasst: 14.01.2005 18:36
von Leo
derRaab hat geschrieben:Danke für den Tipp.

Leider ging es nicht ganz so.

Aber so.

Es geht um das Nullbyte. So wird es mitgesendet:

Code: Alles auswählen

msg.s = "<xmlTEST/>"
SendNetworkData( ClientID, msg, Len(msg)+1)
Gibt es dafür noch eine kürzere Schreibweise? So muß ich ja immer die Länge des Strings kalkullieren. /:->

Vielleicht so ähnlich:

Code: Alles auswählen

SendNetworkString(ClientID, msg + Chr(0))
So geht es natürlich nicht.


bye

Code: Alles auswählen

Procedure SendNetwork(ClientID,msg)
  SendNetworkData(ClientID, msg, Len(msg)+1)
EndProcedure

SendNetwork(ClientID,"<xmlTEST/>")
Habs nich probiert, müsste aber gehen

Verfasst: 15.01.2005 16:42
von derRaab
:mrgreen: klar kann ich eine Prozedur dafür schreiben. Ich wollte nur wissen ob man den Befehl SendNetworkString evtl. doch noch in einer verkürzten Schreibweise verwenden kann, also nur das Nullbyte noch anhängen. Scheint wohl nicht zu gehen. Naja, kein Problem.

Danke für die Infos