2 sasa6077 sasa6077 于 2016.03.01 10:45 提问

http 服务器 流文件读取问题

对http这块不了解,请教下各位大神。
情况是这样的:
1,我用C#的一个media player控件播放http服务器的mp3,给控件设置MP3的url路径后,控件会发送一个http请求给服务器,服务器将整首mp3文件下发给控件;这个正常运行;
2,这个下发的过程,一个6M的MP3,控件用了50s才下载完成;是在同一台电脑,http服务器是用IIS。出现50s下载完成的情况,我估计是这个控件接收慢,并不是网络慢,我自己写测试代码读取服务器上的mp3文件,1s都不用就好了。我自己写了服务器测试,我将整个mp3文件用socket的send方法一次写入。情况还是一样,我的测试客户端,瞬间收到整个mp3数据,但是MP3控件还是用了50s;
3,这个50s的时间,我是确定的。我用了抓包软件查看了;所以,我基本确定,是控件本身的设定,导致50s才下载接收完成;这点我想问下,如何设置一个socket的接收速度??
4,还有一个疑问:这个MP3控件,可以在播放的过程中,拖动进度条,播放后面的数据。如果50s才下载完整首mp3,那么在10s内,拖动到本该20s才能加载的数据,那么这个mp3控件会再次发送网络请求,请求20s后的数据,这点也没问题。我就想问,我在第一次收到mp3控件的请求时,已经将整首mp3文件都写入socket了,但是控件接收了10s后,又再次发送请求了,那么这个socket的后面数据,MP3控件一般是怎么处理的(我估计是丢弃后面的数据)?而我这个socket又需要怎么处理?因为我接收到新的请求是请求20s后的数据,我需要重新创建一个socket去发送20s后的数据了。

1个回答

caozhy
caozhy   Ds   Rxr 2016.03.07 05:44
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
使用vlc搭建http ts流服务器
学习http 视频ts流,首先得搭建一个好的调试环境,这里以window VLC客户端为例。 1、搭建视频ts服务器 2、使用视频ts客户端 3、使用wireshark数据分析
http协议文件与数据上传、及上传图片io流错误
package com.smartdoer.utils; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.Fi
node.js学习笔记之HTTP---发送服务器端响应流
/*使用http.ServerResponse对象的writeHead方法设置响应头信息*/ var http = require('http'); var server = http.createServer(function (req, res) { if(req.url !== '/favicon.ico'){ res.writeHead(200,{'Conten
Java通过http协议下载文件并写入字节流的方法
 最近写微服务,从服务端通过http协议下载文件并写入字节流。开始以为很简单。直接上手就来了,代码如下: String szHttpFile="http://..../downlaod&&fileId="+fileId+"&&extra[action]=download&extra[ext]="+extName; try { HttpURLCon...
[HLS]HTTP Live Streaming流与TS流比较
转自:http://www.cuplayer.com/player/PlayerCode/FMS/2013/0725/905_4.html 你说的应该是 HTTP Live Streaming [1] 吧。这个是 Apple 为了提高流播效率开发的技术,特点是将流媒体切分为若干 TS 片段(比如每10秒一段),然后通过一个扩展的 m3u 列表文件将这些 TS 片段集中起来供客户端播放器接收
Android通过http协议POST传输方式(输出流提交到服务端)
Android通过http协议POST传输方式 博客分类:  Android Android.netPHPApache  Android通过http协议POST传输方式如下: 方式一:HttpPost(import org.apache.http.client.methods.HttpPost) 代码如下: private Button button1
FFmpeg命令推流地址
http://192.168.1.197:8085 ffmpeg -re -i V70609-113408.flv -c copy -f flv rtmp://192.168.1.197/live/livestream 推流地址  rtmp://192.168.1.197/live/livestream 播放地址
流媒体服务器支持HLS,RTMP,RTSP,HTTP-FLV,HTTP-TS,HTTP-AAC输出
流媒体服务器支持HLS,RTMP,RTSP,HTTP-FLV,HTTP-TS,HTTP-AAC输出
在VPS上搭建OpenVPN实现移动联通电信三网免流
以前有各种躲避运营商流量计费的方法,称之为“免流”,但是各大运营商也不是待宰的羔羊,也会通过技术手段进行过滤和屏蔽,这样就导致了极大一部分“免流”技术只是在某些情况下可以使用,比如QQ微信聊天可以,但是优酷视频就不行。 然后最近又有了一种新的“免流”技术,称之为“云免流”。听起来很高大上,其实原理很简单。 各大运营商为了方便用户进行流量查询、缴费等操作,设置了当用户浏览一部分运营商自己
http发送流数据问题,可能的原因和解决办法
http://hi.baidu.com/sunwater007/item/1438dc098af313803c42e290 此程序是目的是以http的方式循环的把一个流数据发送到media player. 为了调试这个socket问题,整整让我痛苦了四天. 正常情况下的socket的同步编程不是太难,我原以为这个小程序应该不会有问题,然而,我错了. 程序让我失望了,而且这种错误是不可跟