读书人

再次求问,怎么监听http请求的mp3的在线

发布时间: 2012-02-09 18:22:27 作者: rapoo

再次求问,如何监听http请求的mp3的在线播放?
我有一些mp3歌曲存在 d:\audio 下
没有安装IIS/TOMCAT等,想通过C# 编程开放一个端口,比如9999. 我的IP(192.168.0.1)
能让网上的用户 通过media play的URL输入 http://192.168.0.1:9999/1.mp3 访问我,
我接收到后,去d:\audio\1.mp3 提取并在线播放给他.

希望还能有朋友帮忙/

[解决办法]

[解决办法]
我好像以前写过一个类似,但不是很成熟,一会去找一下,抛砖引玉.呵呵.

另外,2楼的排名数很棒啊.
lifetimeus
高手过招(爽)
等级:
可用分等级:长工
总技术分:77
总技术分排名:281888
[解决办法]
一直监听指定端口,用Socket什么的,如果有请求就应答请求,否则就一直监听。如果人数多的话,还可以考虑线程池。
[解决办法]
顶顶
我也看看自己的排名,呵呵
[解决办法]
比你差多了,带着4
[解决办法]

C# code
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Threading;using System.Net;using System.IO;namespace FilePlay{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            thListen = new Thread(new ThreadStart(listenConn));   //开始监听网络命令            thListen.Start();        }        private static HttpListener listener;        private static Thread thListen;        private static Thread thUpAudio=null;        HttpListenerResponse response = null;        HttpListenerRequest request = null;        private void listenConn()        {            CheckForIllegalCrossThreadCalls = false;            listener = new HttpListener();            listener.Prefixes.Add("http://*:9999/");            try            {                listener.Start();                while (true)                {                    try                    {                        HttpListenerContext context = listener.GetContext();                        request = context.Request;                        response = context.Response;                        try                        {                            if (thUpAudio != null)                            {                                thUpAudio.Abort();                            }                        }                        catch { }                        thUpAudio = new Thread(new ThreadStart(DoUpAudio));  //有新的播放请求就关掉旧的,建一个新的播放线程                            thUpAudio.IsBackground = true;                        thUpAudio.Start();                    }                    catch { }                }            }            catch    {}            finally            {                listener.Close();            }        }        private void DoUpAudio()        {            try            {                string FILE_NAME = request.RawUrl;                FILE_NAME = @"D:\Audio\" + FILE_NAME;  //这你要自己调试一下文件名对不对                if (!File.Exists(FILE_NAME)) { return; }                FileInfo fileinfo = new FileInfo(FILE_NAME);                int FILE_SIZE = (int)fileinfo.Length;                byte[] streambytes = new byte[FILE_SIZE];                FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read, FileShare.Read);                BinaryReader br = new BinaryReader(fs);                br.Read(streambytes, 0, FILE_SIZE);                response.ContentLength64 = streambytes.Length;                System.IO.Stream ws = response.OutputStream;                ws.Write(streambytes, 0, streambytes.Length);                br.Close();                fs.Close();                if (response != null)                    response.Close();            }            catch { }        }    }} 


[解决办法]
帮顶
[解决办法]
7楼的都把代码贴出来了!!
学习一下!!
[解决办法]
mark~~~~~~~~~~~~
[解决办法]
学习下 顺便看下我的排名!

读书人网 >C#

热点推荐