XML-Socket Server Datenversand?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
derRaab
Beiträge: 71
Registriert: 30.12.2004 13:45
Wohnort: Berlin
Kontaktdaten:

XML-Socket Server Datenversand?

Beitrag 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
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
derRaab
Beiträge: 71
Registriert: 30.12.2004 13:45
Wohnort: Berlin
Kontaktdaten:

Beitrag 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
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

für sowas gibt es proceduren
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag 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
Benutzeravatar
derRaab
Beiträge: 71
Registriert: 30.12.2004 13:45
Wohnort: Berlin
Kontaktdaten:

Beitrag 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
Antworten