What open-source SIP clients (or libraries) there are that could be freely extended by developers?
The only open source C# sipstack that I know of is lumisoft.
You can find a UA example here: http://www.lumisoft.ee/lswww/download/downloads/examples/
(UserAgent = client)
Looking for a good SIP implementation in C#
My own C# SIP stack is at sipsorcery. It's far from perfect but as far as the RFC3261 core SIP standard goes it should be pretty good and you can hook into that using only SIPSorcery.Core assembly. The server applications can be disregarded if you're looking at doing some specialised call control.
Does anyone know a good .Net VoIP library?
To close this off, a few years ago we got ABTO llc to build us a custom version of their SIP client.
It was a managed code implementation that we purchased from them.
It worked very well, but the project was canned later on.
Thanks for all the info and answers.
Open Source SIP Dialer in C#
Yes, take a look at PJSIP. It is implemented in very portable C. But it also has a number of wrappers in other languages, like this .NET wrapper.
PJSIP, or rather its UA (SIP Dialer) interface PJSUA is very easy to handle, and takes care of both signalling and media for you. Oh, and it's under GPL license.
Sip parser in c#
This class from my sipsorcery project can do it for you.
Update: If you have a string that contains a full SIP packet you can parse the full thing by using:
var req = SIPSorcery.SIP.SIPRequest.ParseSIPRequest(reqStr);
var headers = req.Header;
var resp = SIPSorcery.SIP.SIPResponse.ParseSIPResponse(respStr);
var headers = resp.Header;
If you don't know whether the SIP packet is a request or a response you can use the SIPMessage class:
var mess = SIPSorcery.SIP.SIPMessage.ParseSIPMessage(messStr, null, null);
var headers = SIPSorcery.SIP.SIPHeader.ParseSIPHeaders(mess.SIPHeaders);
Update 2:
Given you're using pcap.net to capture the SIP packets you are probably ending up with a block of bytes rather than a string. You can use the SIPMessage class to parse the SIP packet from a UDP payload:
var mess = SIPSorcery.SIP.SIPMessage.ParseSIPMessage(packet.Ethernet.IPv4datagram.Udp.Payload, null, null);
var headers = SIPSorcery.SIP.SIPHeader.ParseSIPHeaders(mess.SIPHeaders);
Related Topics
Force Download of a File on Web Server - Asp .Net C#
Ews - Access All Shared Calendars
Dynamic Routes from Database for ASP.NET MVC Cms
Upload Files and JSON in ASP.NET Core Web API
Mapping Composite Keys Using Ef Code First
Find Nth Occurrence of a Character in a String
What Is the Simplest C# Function to Parse a JSON String into an Object
Passing Arrays by Value and by Reference
Getting Individual Windows Application Current Volume Output Level as Visualized in Audio Mixer
.Net 4.0 and the Dreaded Onuserpreferencechanged Hang
Arbitrary-Precision Decimals in C#
Databind the Source Property of the Webbrowser in Wpf
Pulling Data from a Webpage, Parsing It for Specific Pieces, and Displaying It