问题:用 6600的Socket Server,在正常的GPRS环境下,采用UDP协议实时发送RTP包,
连续100秒左右,经常有几次6-7秒的间隔,服务器端收不到任何数据包,但这部分数据
基本没有丢失,很有规律。请问如何减少这6-7秒的延迟?采用AMR515编码,每200ms发
送一个包,每个包大小不超过250字节。
具体情况描述如下:
我们开发一个Nokia6600手机上GPRS的应用,主要是实时录音PCM数据,通过异步服务程
序进行AMR 515编码(使用系统提供的amrdll.dll库)声音数据通过rtp发送到服务端。
使用的是UDP协议。发现在服务器有一段时间(大约是6-7秒)没有收到数据包,造成
语音的延迟。过了这段时间后又很快接收到延时的数据包。记录的数据如下:
下面分别是客户端和服务器端的log记录,说明如下:
1.No.+ 数字: 表示发送的包序号。
2.Send Data From Queue: 表示从缓冲队列种发送数据包。
3.RunL: 表示发送数据包的iStatus状态。
4.Cancel Write: 表示发送数据超时,取消发送。
5.DoCancel: 表示取消发送时条用DoCancel()函数。
6.Server端信息表示接收的数据包时间和数据。
7.发送超时300毫秒,重发次数0。
//客户端log数据
No.608Send RTP Data: 17:5:28:500000
Send Data From Queue: 17:5:28:531250
No.609Send RTP Data: 17:5:28:671875
No.610Send RTP Data: 17:5:28:796875
RunL: 17:5:28:843750TimeOut = 400 No.608Send RTP Data: 17:5:28:50
Send Data From Queue: 17:5:28:859375
RunL: 17:5:28:890625TimeOut = 130 No.609Send RTP Data: 17:5:28:67
Send Data >From Queue: 17:5:28:921875
RunL: 17:5:28:937500TimeOut = 115 No.610Send RTP Data: 17:5:28:79
No.611Send RTP Data: 17:5:29:62500
Send Data From Queue: 17:5:29:93750
No.612Send RTP Data: 17:5:29:171875
No.613Send RTP Data: 17:5:29:234375
RunL: 17:5:29:265625TimeOut = 265 No.611Send RTP Data: 17:5:29:62
Send Data From Queue: 17:5:29:296875
RunL: 17:5:29:328125TimeOut = 130 No.612Send RTP Data: 17:5:29:17
Send Data >From Queue: 17:5:29:343750
RunL: 17:5:29:390625TimeOut = 145 No.613Send RTP Data: 17:5:29:23
No.614Send RTP Data: 17:5:29:734375
Send Data From Queue: 17:5:29:812500
No.615Send RTP Data: 17:5:29:968750
No.616Send RTP Data: 17:5:30:140625
Cancel Write
DoCancel
Send Data From Queue: 17:5:30:343750
No.617Send RTP Data: 17:5:30:500000
No.618Send RTP Data: 17:5:30:656250
No.619Send RTP Data: 17:5:30:812500
Cancel Write
DoCancel
Send Data From Queue: 17:5:30:984375
No.620Send RTP Data: 17:5:31:156250
No.621Send RTP Data: 17:5:31:281250
No.622Send RTP Data: 17:5:31:437500
Cancel Write
DoCancel
Send Data From Queue: 17:5:31:562500
RunL: 17:5:31:609375TimeOut = 145 No.617Send RTP Data: 17:5:30:50
Send Data From Queue: 17:5:31:640625
No.623Send RTP Data: 17:5:31:765625
No.624Send RTP Data: 17:5:31:906250
No.625Send RTP Data: 17:5:32:15625
Cancel Write
DoCancel
Send Data From Queue: 17:5:32:109375
RunL: 17:5:32:140625TimeOut = 130 No.619Send RTP Data: 17:5:30:81
Send Data From Queue: 17:5:32:171875
RunL: 17:5:32:203125TimeOut = 130 No.620Send RTP Data: 17:5:31:15
Send Data >From Queue: 17:5:32:218750
RunL: 17:5:32:265625TimeOut = 145 No.621Send RTP Data: 17:5:31:28
Send Data From Queue: 17:5:32:281250
RunL: 17:5:32:328125TimeOut = 145 No.622Send RTP Data: 17:5:31:43
//服务器端log数据
17:05:58:392 235 No.608Send RTP Data: 17:5:28:500000
17:05:58:529 235 No.609Send RTP Data: 17:5:28:671875
17:05:58:690 235 No.610Send RTP Data: 17:5:28:796875
17:05:59:090 235 No.612Send RTP Data: 17:5:29:171875
17:05:59:269 235 No.613Send RTP Data: 17:5:29:234375
17:05:59:471 235 No.614Send RTP Data: 17:5:29:734375
17:05:59:657 235 No.615Send RTP Data: 17:5:29:968750
17:05:59:830 235 No.616Send RTP Data: 17:5:30:140625
17:06:06:141 235 No.617Send RTP Data: 17:5:30:500000
17:06:06:320 235 No.618Send RTP Data: 17:5:30:656250
17:06:06:522 235 No.619Send RTP Data: 17:5:30:812500
17:06:06:719 235 No.620Send RTP Data: 17:5:31:156250
17:06:06:903 235 No.621Send RTP Data: 17:5:31:281250
(可以看到从17:05:59到17:06:06有7秒的空白)
问题:
1.服务器端在No.616和No.617之间有7秒延时,请问如何改善有较长时间没有收到数据
的情况?

Reply With Quote

