【问题标题】:Sip parser in c# [closed]c#中的sip解析器[关闭]
【发布时间】:2020-12-22 17:01:53
【问题描述】:

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

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

【问题讨论】:

标签: c# parsing sip voip


【解决方案1】:

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

【讨论】:

  • 谢谢你,但问题是我不知道我应该在函数中输入什么字符串。正如我所说,我使用 pcap.net 来捕获数据包,所以我有“数据包”类。我应该发送整个数据包吗?或者只是 packet.Ethernet.IPv4datagram.Udp.Payload.ToString() ???非常感谢!
  • 捕获数据包的 SIP 部分将是 UDP 有效负载,因此 Udp.Payload 似乎是正确的属性。查看进一步更新。
  • 如果你能帮助我,还有一件事.. 我需要获取源号码和目标号码(不是 IP,号码)。谢谢!
  • 对于目标号码,您可能是指请求 URI (req.URI.User),对于源号码,请查看“From”标头。
  • 嘿嘿 :) 有没有办法从 SIP 数据包中获取 SDP 信息?我正在尝试从 SIP 数据包中获取媒体端口,以了解哪些 RTP 数据包属于哪些 SIP 数据包
猜你喜欢
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 2010-09-18
相关资源
最近更新 更多