最近一个月摸一摸飞信协议。我也下了装了wincap和ethereal抓包,参考大虾的研究,一边摸索写代码。
开始,一切都挺顺利的:
- 登陆SSI服务器成功了
- 登陆ProxyServer也验证能通过了
- 能得到好友列表了
直到
- 被邀请,然后接收信息,回复同样的信息,这里卡住!
现象是,用户A发送会话邀请,程序B接受邀请,用户A发送信息Hi,程序B回应200 OK,——这个时候,用户A发现B已经掉线。一分钟之后,用户A收到提示:“消息发送失败:【Hi 】与服务器联系超时!”
这问题可整整卡了我两个星期了。无数次对比……问题究竟出在哪里?
用户B,程序:111111111
用户A:222222222
-RECV-
I 111111111 SIP-C/2.0
Q: 1 I
F: sip:222222222@fetion.com.cn;p=1700
K: text/html-fragment
K: multiparty
I: -1
L: 137
v=0
o=-0 0 IN 192.168.0.123:2370
s=session
c=IN IP4 192.168.0.123:2370
t=0 0
m=message 2370 sip sip:222222222@fetion.com.cn;p=1700
-END RECV-
-SEND-
SIP-C/2.0 200 OK
I: -1
Q: 1 I
F: sip:222222222@fetion.com.cn;p=1700
K: text/html-fragment
K: multiparty
L: 133
v=0
o=-0 0 IN 10.67.6.162:2578
s=session
c=IN IP4 10.67.6.162:2578
t=0 0
m=message 2578 sip sip:111111111@fetion.com.cn;p=4100
-END SEND-
-SEND-
A 111111111 SIP-C/2.0
Q: 1 A
F: sip:222222222@fetion.com.cn;p=1700
I: -1
-END SEND-
Sent 254 bytes to server.
Sent 79 bytes to server.
-RECV-
A 111111111 SIP-C/2.0
Q: 1 A
F: sip:222222222@fetion.com.cn;p=1700
I: -1
-END RECV-
-RECV-
M 111111111 SIP-C/2.0
C: text/html-fragment
Q: 2 M
D: Tue, 25 Mar 2008 07:19:01 GMT
F: sip:222222222@fetion.com.cn;p=1700
K: SaveHistory
I: -1
XI: c2701033a43c4a4aadc402fb5be2a6ed
L: 76
<Font>宋体' Color='-16777216' Size='10.5'>上线看到了吗.</Font>
-END RECV-
-SEND-
SIP-C/2.0 200 OK
F: sip:222222222@fetion.com.cn;p=1700
I: -1
Q: 2 M
-END SEND-
-SEND-
M fetion.com.cn SIP-C/2.0
F: sip:111111111@fetion.com.cn;p=4100
I: 2
Q: 1 M
T: sip:222222222@fetion.com.cn;p=1700
C: text/html-fragment
K: SaveHistory
L: 55
<Font>宋体' Color='-16777216' Size='10.5'>收到</Font>
-END SEND-
(结束了,没有下文。M的Ack都没有回回来。)