Hi,

This is not quite something small and simple. I strongly suggest you to
start with an open source SIP library. You can find several projects on
the world wide web that are free of charge. Some of them are really well
done, but sometimes heavy for what we need. But they provide good
examples for someone to start programming in SIP. I strongly recommend
you Vovida since this is the most complete one in my opinion, but here
is the list of free stack I know:

www.vovida.org (Open source Vovida SIP stack)

http://www.gnu.org/software/osip/osip.html (oSIP SIP stack)

http://www.sourceforge.net/projects/openh323 (OPAL SIP, this is a
subproject of openh323, just check in the CVS browser).


However, I'll resume you in a few general steps the implementation of a
sip stack from scratch.

First of all, you need to implement or generate an ABNF parser to
understand and validate SIP/SDP messages. You can find several open
source projects that allow you to generate parser from a grammar. Search
on the Web for bison, flex or antlr.

Secondly, you need to implement different network layers since SIP
supports many transport protocols such as TCP, UDP and TLS. If you refer
to RFC 3261, you need to implement the transaction layer. Basically, the
transaction layer is an object that lives a certain amount of time to
ensure that packets sent over unreliable transports are sent reliably.
Furthermore, you need to maintains pieces of state and time information
during a transaction which are useful for your User Agent (read RFC
3261) to takes decision of retransmit or delete a certain packet.

Finally, you need to join your network/transaction layer with your
parsers and maintain session/dialog information. A dialog is a peer to
peer relationship that basically tells you who is the remote endpoint
you are talking to. You need to keeps information about routes (proxies
or servers) that are between you and the remote party you are calling.
You also need to maintain dialog state. Different decision are taken
when packets are received based on the dialog state.

This is really brief but the spec is about many hundred of pages long so
I can't tell you all about SIP. See www.zvon.org for better human
interface reading of RFC documents.

Hope this helped,

Kevin Bouchard
Software developer
 
Pyxis Products
Cardinal Health
330 St-Vallier Street E., Suite 330
Quebec City, QC, Canada
G1K 9C5
Tel.: (418)872-0172, x8974
Fax: (418)872-0038
[EMAIL PROTECTED]
> -----Original Message-----
> From: [EMAIL PROTECTED]
[mailto:sip-implementors-
> [EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED]
> consulting.com
> Sent: 14 octobre, 2004 06:13
> To: [EMAIL PROTECTED]
> Subject: [Sip-implementors] SIP
> 
> Good morning;
> 
> We are working at the moment trying to develop some SIP applications,
> programming in C++ (Symbian). We were very pleased if you send us some
> simple examples where we could understand the way of programming with
this
> protocol.
> 
> Thank you on advance for your attention.
> 
> Yours sincerely.
> 
>       Marcos
> 
> 
> 
> _______________________________________________
> Sip-implementors mailing list
> [EMAIL PROTECTED]
> http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors


_______________________________________________
Sip-implementors mailing list
[EMAIL PROTECTED]
http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors

Reply via email to