再次求问,如何监听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~~~~~~~~~~~~
[解决办法]
学习下 顺便看下我的排名!