【发布时间】:2020-12-22 17:01:53
【问题描述】:
我正在寻找可以解析 sip 数据包的 c# 库或类。 我需要可以帮助我获得 数据包中的 Call-ID 字段、请求类型以及基本上将 sip 数据包分解为其字段。
有人知道什么可以帮助我吗? 谢谢,ofek
【问题讨论】:
-
我正在使用 pcap.net 来捕获数据包
我正在寻找可以解析 sip 数据包的 c# 库或类。 我需要可以帮助我获得 数据包中的 Call-ID 字段、请求类型以及基本上将 sip 数据包分解为其字段。
有人知道什么可以帮助我吗? 谢谢,ofek
【问题讨论】:
我的sipsorcery 项目中的这个class 可以为您完成。
更新:如果您有一个包含完整 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);
【讨论】: