yes, expat is good.

you may look in my code, i did it this way
with
winsock /vc++
expat

my source is under GPL! available at
xcd.jabberstudio.org

Edrin

On 5 Nov 2004 at 17:06, Jon Phillips wrote:

> First of all thanks for your wonderful insight!
> 
> Heiner Wolf wrote:
> > Hi,
> > 
> > 
> >>I interested to know if there are any good resources, documents, or 
> >>source code I could look at to see how to properly receive 
> >>packets from a jabber server like jabberd (which I am using) via TCP and 
> >>then how to receive and reconstruct the entire packet.
> > 
> > 
> > When you deal with TCP as in the case of Jabber, then you must not think in terms 
> > of 'packets'. Both parties will receive a stream of bytes. While they send chunks 
> > of data on the connection, there is no guarantee that the receiver gets the data 
> > in the original chunks. The only guarantees that TCP gives are 1. that the data 
> > will arrive or you get an error 2. the byte order will be retained. Again: the 
> > receiver might get the data in totally different 'packets'. 
> > 
> > 
> >>I'm using Visual Studio .net and WINSOCK to do connection and 
> >>receiving. Right now I have a working client that receive packets that 
> >>are 8129 bytes, but these packets might not contain the full message. 
> >>This problem gets worse with more traffic.
> > 
> > 
> > What you must do is: forward every piece of data to the protocol parser. In this 
> > case it is an XML parser. The XML parser must be able to parse 'incomplete' XML 
> > and tell you about the structure before the main wrapper tag is closed. People 
> > call it a SAX parser as opposed to DOM parsers. You need a SAX parser. You feed it 
> > with every byte that comes from the connection. There is virtually nothing between 
> > the read() system call where you get data from the connection and the parse() 
> > where you forward the data to 
the parser. The parser will consume the bytes. The parser will tell you when a first 
order tag is finished. That would be something like a <message/> or <presence/> inside 
a <stream:stream>. If this happens then you can analyze the first order tag. That's 
then called a stanza in Jabber terms. In XML terms it is just the first order sub tag 
of the XML wrapper tag.
> 
> What parser would you recommend? I'm looking into expat. I was using 
> tinyXML, but it doesn't seem to fit the bill you are describing...
> 
> > 
> > 
> >>What is the best way to construct entire jabber server packets into 
> >>comlete packets/message. For example, the server might send a user's 
> >>message in xml, and because of web traffic the complete message might 
> >>not arrive in teh received 8192 bytes...
> > 
> > 
> > I reiterate, because this is important: this is TCP. There are no messages. Your 
> > network API will give you multiple bytes at once. This looks like a message. You 
> > don't care. You handle all data to the XML parser. The parser will tell you when 
> > stanzas are complete. You are probably testing in your lab. Over the wide internet 
> > you might even get smaller pieces of data at once (like 500 bytes). Stanzas might 
> > be split badly. There might be even the last '>' missing. Don't look at the data 
> > directly. Let the XML 
parser look. It will tell you when a stanza is complete. 
> > 
> > 
> >>Other than this problem, my custom jabber client for this game, 
> >>gopetslive.com is going pretty well.
> >>
> >>Any help or code sample or pointers would be much appreciated.
> > 
> > 
> > hw
> > --
> > Dr. Klaus H. Wolf
> > bluehands GmbH & Co.mmunication KG
> > http://www.bluehands.de/people/hw
> > +49 (0721) 16108 75
> > --
> > Jabber enabled Virtual Presence on the Web: http://www.lluna.de/
> > Open Source Future History: http://www.galactic-developments.com/
> > _______________________________________________
> > jdev mailing list
> > [EMAIL PROTECTED]
> > http://mail.jabber.org/mailman/listinfo/jdev
> > 
> > 
> 
> -- 
> Jon Phillips
> 
> KOREA.PH.010.3140.7483
> USA.PH.858.361.2811
> [EMAIL PROTECTED]
> http://www.rejon.org
> 
> Inkscape (http://inkscape.org)
> Open Clip Art Library (www.openclipart.org)
> CVS Book (http://cvsbook.ucsd.edu)
> Scale Journal (http://scale.ucsd.edu)
> _______________________________________________
> jdev mailing list
> [EMAIL PROTECTED]
> http://mail.jabber.org/mailman/listinfo/jdev
> 


_______________________________________________
jdev mailing list
[EMAIL PROTECTED]
http://mail.jabber.org/mailman/listinfo/jdev

Reply via email to