C# 中的 Sip 解析器

本文关键字:Sip 中的 | 更新日期: 2023-09-27 18:35:20

我正在寻找可以解析 sip 数据包的 c# 库或类。我需要能够帮助我获得呼叫ID字段从数据包,请求类型,基本上将sip数据包分解为其字段。

有人知道可以帮助我的东西吗?谢谢,奥菲克

C# 中的 Sip 解析器

我的

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);