Warm tip: This article is reproduced from serverfault.com, please click

parsing-C#中的Sip解析器

(parsing - Sip parser in c#)

发布于 2013-10-13 13:51:59

我正在寻找可以解析sip数据包的c#库或类。我需要可以帮助我从数据包中获取Call-ID字段,请求类型以及基本上将sip数据包细分为其字段的函数。

有人知道有什么可以帮助我的吗?谢谢,ofek

Questioner
Ofek Agmon
Viewed
1
sipsorcery 2013-10-17 05:11:17

我的sipsorcery项目中的此类课程可以为你完成。

更新:如果你的字符串包含完整的SIP数据包,则可以使用以下方法来解析完整的内容:

var req = SIPSorcery.SIP.SIPRequest.ParseSIPRequest(reqStr); 
var headers = req.Header;

var resp = SIPSorcery.SIP.SIPResponse.ParseSIPResponse(respStr);  
var headers = resp.Header;

如果你不知道SIP数据包是请求还是响应,则可以使用SIPMessage类:

var mess = SIPSorcery.SIP.SIPMessage.ParseSIPMessage(messStr, null, null);
var headers = SIPSorcery.SIP.SIPHeader.ParseSIPHeaders(mess.SIPHeaders);        

更新2

假设你正在使用pcap.net捕获SIP数据包,则最终可能会得到一个字节块而不是一个字符串。你可以使用SIPMessage类来解析来自UDP有效负载的SIP数据包:

var mess = SIPSorcery.SIP.SIPMessage.ParseSIPMessage(packet.Ethernet.IPv4datagram.Udp.Payload, null, null);
var headers = SIPSorcery.SIP.SIPHeader.ParseSIPHeaders(mess.SIPHeaders);