2013-10-13 59 views
0

我正在尋找可以解析sip數據包的c#庫或類。 我需要的功能將幫助我從數據包中獲取 Call-ID字段,請求類型,並且基本上將sip數據包分解爲其字段。cip中的sip解析器#

有人知道可以幫助我的東西嗎? 謝謝,ofek

+0

我使用pcap.net捕捉數據包 –

+0

檢查了這一點:http://stackoverflow.com/questions/498056/c -sharp-sip-stack-library – MUG4N

回答

4

這個class從我的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數據包是請求或響應可以使用SIP消息類:

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

更新2

鑑於您正在使用pcap.net來捕獲SIP數據包,您可能會以一個字節塊而不是字符串結尾。您可以使用SIP消息類從UDP有效載荷解析SIP數據包:

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

Thnaks你,但問題是,我不知道我應該在函數中放入什麼字符串。正如我所說,我使用pcap.net來捕獲數據包,所以我有「數據包」類。我應該發送整個數據包嗎?或只是數據包。Ethernet.IPv4datagram.Udp.Payload.ToString()???非常感謝! –

+0

捕獲包的SIP部分將是UDP有效負載,因此Udp.Payload似乎是正確的屬性。查看更多更新。 – sipwiz

+0

謝謝你!它的工作 –