python - 如何使用 Python 套接字发送 SIP 消息

标签 python sip invite

我需要使用 Python 套接字发送 SIP 消息,我已经让客户端向服务器发送了一些东西,但我无法让客户端向服务器发送 SIP 消息 INVITE

#!/usr/bin/python

import socket

R_IP = '192.168.2.1'
R_PORT = 5060 

message = 'INVITE sip:user1110000000350@.com SIP/2.0 To: <sip:user4110000000350@whatever.com>\x0d\x0aFrom: sip:user9990000000000@rider.com;tag=R400_BAD_REQUEST;taag=4488.1908442942.0\x0d\x0aP-Served-User: sip:user4110000000350@whatever.com\x0d\x0aCall-ID: 00000000-00001188-71C0873E-0@10.44.40.47\x0d\x0aCSeq: 1 INVITE\x0d\x0aContact: sip:user9990000000000@rider.com\x0d\x0aMax-Forwards: 70\x0d\x0aVia: SIP/2.0/TCP 10.44.40.47;branch=z9hG4bK1908442942.4488.0\x0d\x0aContent-Length: 10\x0d\x0a\x0d\x0aRandomText'

def sendPacket():
   proto = socket.getprotobyname('tcp')                         
   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#, proto) 

   try:
       s.connect((R_IP , R_PORT)) 
       s.sendall(message)                                       
   except socket.error:
       pass
   finally:
       s.close()

sendPacket()

你有什么想法吗?

最佳答案

根据 RFC 3261 :

  1. 每个 header 必须以换行符开头,并且 header 名称前不能有空格。
  2. 最小 SIP 请求必须包含 ToFromCSeqCall-IDMax -ForwardsVia header 。

这意味着您在 To header 之前正确添加了换行符,但您的答案也错误地包含 Froma header 而不是 From。此外, header P-Served-User 通常是不必要的。

关于python - 如何使用 Python 套接字发送 SIP 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135991/

相关文章:

Python:将一个大文本文件分割为多个标题

python - 如何使用python为ppt中的图片添加超链接

python - 从python中的2个列表中创建一个重复元素列表

Android pjsip DTMF 代码不发送

react-native - 在安装模块中 react native PJSIP 错误

java - JAIN-SIP 对 RFC 7339 的支持

ruby-on-rails - 是否有插件或 gem 可以帮助我在 rails 中执行 "invite a friend"功能?

django邀请码app推荐?

php - 防止滥用邀请系统

python - 有什么办法可以让 tkinter 中的输入框等待输入? (在 Python 3 中)