Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python套接字发送SIP消息_Python_Sip_Invite - Fatal编程技术网

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

如何使用Python套接字发送SIP消息,python,sip,invite,Python,Sip,Invite,我需要使用pythonsockets发送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\x0aF

我需要使用pythonsockets发送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()
#/usr/bin/python
导入套接字
R_IP='192.168.2.1'
R_端口=5060
消息='邀请sip:user1110000000350@.comSIP/2.0至:\x0d\x0aFrom:SIP:user9990000000000@rider.com;tag=R400\u坏请求;taag=4488.1908442942.0\x0d\x0aP服务用户:sip:user4110000000350@whatever.com\x0d\x0aCall ID:00000000-00001188-71C0873E-0@10.44.40.47\x0d\x0aCSeq:1邀请\x0d\x0a联系人:sip:user9990000000000@rider.com\x0d\x0aMax转发:70\x0d\x0aVia:SIP/2.0/TCP 10.44.40.47;branch=z9hG4bK1908442942.4488.0\x0d\x0a内容长度:10\x0d\x0a\x0d\x0aRandomText'
def sendPacket():
proto=socket.getprotobyname('tcp')
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#,proto)
尝试:
s、 连接((R_IP,R_端口))
s、 发送全部(消息)
除socket.error外:
通过
最后:
s、 关闭()
sendPacket()

你有什么想法吗?

好的,我知道,也许它会帮助别人

SIP消息的正确格式如下:

INVITE sip:user11@whatever SIP/2.0
To: <to>
Call-ID: <call_id>
<empty line>
body
INVITE sip:user11@whateverSIP/2.0
致:
呼叫ID:
身体
所以

message='邀请sip:user1110000000350@whatever.comSIP/2.0\r\n收件人:\r\n罗马:SIP:user9990000000000@rider.com;tag=R400\u坏请求;taag=4488.1908442942.0\r\nP服务用户:sip:user4110000000350@whatever.com\r\n调用ID:00000000-00001188-71C0873E-0@10.44.40.47\r\n序号:1邀请\r\n联系人:sip:user9990000000000@rider.com\r\n最大转发:70\r\nVia:SIP/2.0/TCP 10.44.40.47;branch=z9hG4bK1908442942.4488.0\r\n内容长度:10\r\n\r\n随机文本'
\r\n
非常重要,没有空格

根据:

  • 每个标题必须以换行符开头,标题名称前不得有空格
  • 最小SIP请求必须包含
    CSeq
    呼叫ID
    最大转发
    和通过头的

  • 这意味着您在
    标题之前正确地添加了换行符,但您的答案也错误地包含
    来自
    标题,而不是
    来自
    。另外,标题
    P-Served-User
    通常是不必要的。

    谢谢@Andriy,
    Froma
    可能是一个错误,一个打字错误。然后我不得不用
    P-Served-User
    发送一条消息,我可能没有从代码中删除它。
    message = 'INVITE sip:user1110000000350@whatever.com SIP/2.0\r\nTo: <sip:user4110000000350@whatever.com>\r\nFroma: sip:user9990000000000@rider.com;tag=R400_BAD_REQUEST;taag=4488.1908442942.0\r\nP-Served-User: sip:user4110000000350@whatever.com\r\nCall-ID: 00000000-00001188-71C0873E-0@10.44.40.47\r\nCSeq: 1 INVITE\r\nContact: sip:user9990000000000@rider.com\r\nMax-Forwards: 70\r\nVia: SIP/2.0/TCP 10.44.40.47;branch=z9hG4bK1908442942.4488.0\r\nContent-Length: 10\r\n\r\nRandomText'