博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpListenerCS客户端监听http
阅读量:5333 次
发布时间:2019-06-15

本文共 26520 字,大约阅读时间需要 88 分钟。

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;using System.Configuration;namespace MediaPlayerDemo20140925{    public partial class BVBMovieDemo : Form    {        bool loop = true;//是否重复播放        bool isStop = false;        int currentMovieID = 0;//保存当前MovieID        DataSet dsPlayItem = null;//当前        delegate object ControlMediaPlayer(object obj);        DateTime? dtime;        int state = 0;        object objListerner;//销毁时使用        static string ip = ConfigurationManager.AppSettings["ip"];//http://*:8080/        public BVBMovieDemo()        {            InitializeComponent();        }        private void BVBMovieDemo_Load(object sender, EventArgs e)        {            DataSet ds = BVBDBAccess.DBHelper.Query("select * from PlayItem where sortno=-1");           if (ds != null && ds.Tables.Count > 0)           {               DataTable dt = ds.Tables[0];               if (dt.Rows.Count > 0)               {                   currentMovieID = (int)dt.Rows[0]["MovieID"];                   dsPlayItem = ds.Copy();                   axWindowsMediaPlayer1.URL = Application.StartupPath + dt.Rows[0]["URL"].ToString();               }               else               {                   MessageBox.Show("无启动视频,请在数据库中设置。","温馨提示");                   return;               }           }            Thread thread = new Thread(new ThreadStart(listern));            thread.Start();            timer1.Start();            this.Activate();            this.WindowState = FormWindowState.Maximized;        }        ///=================================================================================================        ///    Plays this object.         /// 
lidongbo, 2014/9/26.
///================================================================================================= private bool Play() { ControlMediaPlayer op = delegate( object obj) { isStop = false; axWindowsMediaPlayer1.Ctlcontrols.play(); return true; }; return (bool)axWindowsMediaPlayer1.Invoke(op,""); } ///================================================================================================= /// Stops this object. ///
lidongbo, 2014/9/26.
///================================================================================================= private bool Stop() { ControlMediaPlayer op = delegate(object obj){ isStop = true; axWindowsMediaPlayer1.Ctlcontrols.stop(); return true; }; return (bool)axWindowsMediaPlayer1.Invoke(op,""); } ///================================================================================================= /// Pauses this object. ///
lidongbo, 2014/9/26.
///================================================================================================= private bool Pause() { ControlMediaPlayer op = delegate(object obj) { axWindowsMediaPlayer1.Ctlcontrols.pause(); return true; }; return (bool)axWindowsMediaPlayer1.Invoke(op,""); } ///================================================================================================= /// Resumes this object. ///
lidongbo, 2014/9/26.
///================================================================================================= private bool Resume() { ControlMediaPlayer op = delegate(object obj) { isStop = false; axWindowsMediaPlayer1.Ctlcontrols.play(); return true; }; return (bool)axWindowsMediaPlayer1.Invoke(op,string.Empty); } ///================================================================================================= /// Previous this object. ///
lidongbo, 2014/9/26.
///================================================================================================= private bool Previous() { ControlMediaPlayer op = delegate(object obj) { DataSet ds = BVBDBAccess.DBHelper.Query("select * from playitem"); if (ds != null && ds.Tables.Count > 0) { DataTable dt = ds.Tables[0]; DataRow[] drs = dt.Select("MovieID="+currentMovieID.ToString()); if (drs != null && drs.Length > 0) { DataRow[] drs2 = dt.Select("SortNo<"+drs[0]["SortNo"].ToString(),"sortno desc");//获取上一个movie if (drs2 != null && drs2.Length > 0) { if (drs2[0]["SortNo"].ToString() != "-1") { currentMovieID = (int)drs2[0]["MovieID"]; dsPlayItem = ds.Copy(); axWindowsMediaPlayer1.currentPlaylist.clear(); axWindowsMediaPlayer1.URL = Application.StartupPath + drs2[0]["URL"].ToString(); axWindowsMediaPlayer1.Ctlcontrols.play(); } } } } axWindowsMediaPlayer1.Ctlcontrols.play(); return true; }; return (bool)axWindowsMediaPlayer1.Invoke(op,string.Empty); } private bool Next() { ControlMediaPlayer op = delegate(object obj) { DataSet ds = BVBDBAccess.DBHelper.Query("select * from playitem"); if (ds != null && ds.Tables.Count > 0) { DataTable dt = ds.Tables[0]; DataRow[] drs = dt.Select("MovieID=" + currentMovieID.ToString()); if (drs != null && drs.Length > 0) { DataRow[] drs2 = dt.Select("SortNo>" + drs[0]["SortNo"].ToString(), "sortno asc");//获取下一个movie if (drs2 != null && drs2.Length > 0) { currentMovieID = (int)drs2[0]["MovieID"]; dsPlayItem = ds.Copy(); axWindowsMediaPlayer1.currentPlaylist.clear(); axWindowsMediaPlayer1.URL = Application.StartupPath + drs2[0]["URL"].ToString(); //axWindowsMediaPlayer1.fullScreen == true;// axWindowsMediaPlayer1.fullScreen; axWindowsMediaPlayer1.Ctlcontrols.play(); } } } return true; }; return (bool)axWindowsMediaPlayer1.Invoke(op, string.Empty); } ///================================================================================================= /// 静音. ///
lidongbo, 2014/9/3.
///================================================================================================= private bool MuteOn() { ControlMediaPlayer op = delegate(object obj) { axWindowsMediaPlayer1.settings.mute = true; return true; }; return (bool)axWindowsMediaPlayer1.Invoke(op,string.Empty); } ///================================================================================================= /// 取消静音. ///
lidongbo, 2014/9/3.
///================================================================================================= private bool MuteOff() { ControlMediaPlayer op = delegate(object obj) { axWindowsMediaPlayer1.settings.mute = false; return true; }; return (bool)axWindowsMediaPlayer1.Invoke(op,string.Empty); } private int GetVolume() { ControlMediaPlayer op = delegate(object obj) { return axWindowsMediaPlayer1.settings.volume; }; return (int)axWindowsMediaPlayer1.Invoke(op,""); } private bool SetVolume(int volume) { ControlMediaPlayer op = delegate(object obj) { axWindowsMediaPlayer1.settings.volume = (int)obj; return true; }; return (bool)axWindowsMediaPlayer1.Invoke(op,volume); } private bool SetLoop(bool loop) { this.loop = loop; return true; //axWindowsMediaPlayer1.settings.setMode("loop", true); } ///================================================================================================= /// 获取当前进度. ///
lidongbo, 2014/9/26.
///
The seek.
///================================================================================================= private string GetSeek() { ControlMediaPlayer op = delegate(object obj) { return axWindowsMediaPlayer1.Ctlcontrols.currentPositionString; //return axWindowsMediaPlayer1.Ctlcontrols.currentPosition.ToString()+"|" +axWindowsMediaPlayer1.Ctlcontrols.currentPosition.ToString() + "|"+axWindowsMediaPlayer1.currentMedia.durationString + "|"+axWindowsMediaPlayer1.currentMedia.duration; }; return (string)axWindowsMediaPlayer1.Invoke(op,string.Empty); } private bool SetSeek(string position) { double seconds = 0; string[] arr = ((string)position).Split(':'); if (arr.Length == 0) { return false; } int iResult = 0; Array.Reverse(arr); for (int i = 0; i < arr.Length ; i++) { if (i == 0) { if (!int.TryParse(arr[i], out iResult) || iResult < 0 || iResult >= 60) { return false; } seconds += Convert.ToDouble(arr[i]); } else if (i == 1) { if (!int.TryParse(arr[i], out iResult) || iResult < 0 || iResult >= 60) { return false; } seconds += Convert.ToDouble(arr[i]) * 60; } else if (i == 2) { if (!int.TryParse(arr[i], out iResult) || iResult < 0 || iResult >= 24) { return false; } seconds += Convert.ToDouble(arr[i]) * 60 * 60; } } //if (arr.Length == 3) //{ // for (int i = arr.Length - 1; i >= 0; i--) // { // if (i == 0) // { // if (!int.TryParse(arr[i], out iResult) || iResult < 0 || iResult >= 60) // { // return false; // } // seconds += Convert.ToDouble(arr[i]); // } // else if (i == 1) // { // if (!int.TryParse(arr[i], out iResult) || iResult < 0 || iResult >= 60) // { // return false; // } // seconds += Convert.ToDouble(arr[i]) * 60; // } // else if (i == 2) // { // if (!int.TryParse(arr[i], out iResult) || iResult < 0 || iResult >= 24) // { // return false; // } // seconds += Convert.ToDouble(arr[i]) * 60 * 60; // } // } //} ControlMediaPlayer op = delegate(object obj) { string[] arr2 = axWindowsMediaPlayer1.currentMedia.durationString.Split(':'); double allsecends = 0; Array.Reverse(arr2); for (int i = 0; i < arr2.Length ; i++) { if (i == 0) { allsecends += Convert.ToDouble(arr2[i]); } else if (i == 1) { allsecends += Convert.ToDouble(arr2[i]) * 60; } else if (i == 2) { allsecends += Convert.ToDouble(arr2[i]) * 60 * 60; } } //for (int i = arr.Length - 1; i >= 0; i--) //{ // if (i == 0) // { // allsecends += Convert.ToDouble(arr2[i]); // } // else if (i == 1) // { // allsecends += Convert.ToDouble(arr2[i]) * 60; // } // else if (i == 2) // { // allsecends += Convert.ToDouble(arr2[i]) * 60 * 60; // } //} if ((double)obj > allsecends) { return false; } double result = (double)obj / allsecends * axWindowsMediaPlayer1.currentMedia.duration; axWindowsMediaPlayer1.Ctlcontrols.currentPosition = result; return true; }; if (!(bool)axWindowsMediaPlayer1.Invoke(op, seconds)) { return false; }; return true; } private object GetMovieInfo() { ControlMediaPlayer op = delegate(object obj) { return "当前视频ID:" + currentMovieID + ",名称:" + dsPlayItem.Tables[0].Select("MovieID="+currentMovieID)[0]["MovieName"].ToString(); }; return axWindowsMediaPlayer1.Invoke(op,""); } private bool PlayMovie(int movieid, ref string returnString) { ControlMediaPlayer op = delegate(object obj) { DataSet ds = BVBDBAccess.DBHelper.Query("select * from playitem"); if (ds != null && ds.Tables.Count > 0) { DataTable dt = ds.Tables[0]; DataRow[] drs = dt.Select("MovieID=" + movieid.ToString()); if (drs != null && drs.Length > 0) { currentMovieID = (int)drs[0]["MovieID"]; dsPlayItem = ds.Copy(); axWindowsMediaPlayer1.currentPlaylist.clear(); axWindowsMediaPlayer1.URL = Application.StartupPath + drs[0]["URL"].ToString(); axWindowsMediaPlayer1.Ctlcontrols.play(); return true; } } return false; }; if (!(bool)axWindowsMediaPlayer1.Invoke(op, string.Empty)) { returnString = "不存在"; return false; }; return true; } private void listern() { try { using (HttpListener listerner = new HttpListener()) { objListerner = listerner; listerner.AuthenticationSchemes = AuthenticationSchemes.Anonymous;//指定身份验证 Anonymous匿名访问 listerner.Prefixes.Add(ip); listerner.Start(); while (true) { bool IsSuccess = false; string returnString = string.Empty; //等待请求连接 //没有请求则GetContext处于阻塞状态 HttpListenerContext ctx = listerner.GetContext(); ctx.Response.StatusCode = 200;//设置返回给客服端http状态代码 string operation = ctx.Request.QueryString["operation"]; string param = ctx.Request.QueryString["param"]; int iResult = 0; bool bResult = false; double dResult = 0; if (!string.IsNullOrEmpty(operation)) { switch (operation) { case "play": IsSuccess = Play(); break; case "stop": IsSuccess = Stop(); break; case "muteon": IsSuccess = MuteOn(); break; case "muteoff": IsSuccess = MuteOff(); break; case "setvolume": if (Int32.TryParse(param, out iResult) && iResult >= 0 && iResult <= 100) { SetVolume(Convert.ToInt32(param)); IsSuccess = true; } else { if (string.IsNullOrEmpty(param)) { returnString += "请输入参数"; } else { returnString += "参数的值应在0到100之间"; } IsSuccess = false; } break; case "getvolume": returnString = GetVolume().ToString(); IsSuccess = true; break; case "previous": IsSuccess = Previous(); break; case "next": IsSuccess = Next(); break; case "loopon": SetLoop(true); IsSuccess = true; break; case "loopoff": SetLoop(false); IsSuccess = true; break; case "pause": IsSuccess = Pause(); break; case "resume": IsSuccess = Resume(); break; case "getseek": returnString = GetSeek(); IsSuccess = true; break; case "setseek": IsSuccess = SetSeek(param); if (!IsSuccess) { returnString = "请输入正确的时间格式和时间点"; } break; case "currentmovie": returnString = GetMovieInfo().ToString(); IsSuccess = true; break; case "playmovie": if (Int32.TryParse(param, out iResult) && iResult > 0) { IsSuccess = PlayMovie(Convert.ToInt32(param), ref returnString); } else { IsSuccess = false; returnString += "请输入MovieID"; } break; } } //使用Writer输出http响应代码 using (StreamWriter writer = new StreamWriter(ctx.Response.OutputStream)) { //writer.WriteLine("
The WebServer Test"); //writer.Write(returnString); //writer.WriteLine("
"); //writer.WriteLine("
"); //writer.WriteLine("
"); //writer.WriteLine("
"); //writer.WriteLine(""); //writer.WriteLine(""); ctx.Response.ContentType = "text/plain"; String callbackFunName = ctx.Request.QueryString["callbackparam"]; //writer.Write(callbackFunName + "([ { name:\"John\"}])"); writer.Write(callbackFunName + "({ result:\"" + (IsSuccess ? "success" : "fail") + "\",data:\"" + returnString + "\"})"); writer.Close(); ctx.Response.Close(); } } listerner.Stop(); } } catch { } //catch (Exception ex) { // MessageBox.Show(ex.Message); //} } private void timer1_Tick(object sender, EventArgs e) { if (loop && !isStop) { //利用影片总长度比较来得到 //axWindowsMediaPlayer1.Ctlcontrols.play(); if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsStopped) { DataSet ds = BVBDBAccess.DBHelper.Query("select * from playitem"); if (ds != null && ds.Tables.Count > 0) { DataTable dt = ds.Tables[0]; DataRow[] drs = dt.Select("MovieID=" + currentMovieID.ToString()); if (drs != null && drs.Length > 0) { DataRow[] drs2 = dt.Select("SortNo>" + drs[0]["SortNo"].ToString(), "sortno asc");//获取下一个movie if (drs2 != null && drs2.Length > 0) { currentMovieID = (int)drs2[0]["MovieID"]; dsPlayItem = ds.Copy(); axWindowsMediaPlayer1.currentPlaylist.clear(); axWindowsMediaPlayer1.URL = Application.StartupPath + drs2[0]["URL"].ToString(); axWindowsMediaPlayer1.Ctlcontrols.play(); } else //到最后一个后播放第一个 { drs2 = dt.Select("SortNo>-1", "sortno asc");//获取播放第一个movie if (drs2 != null && drs2.Length > 0) { currentMovieID = (int)drs2[0]["MovieID"]; dsPlayItem = ds.Copy(); axWindowsMediaPlayer1.currentPlaylist.clear(); axWindowsMediaPlayer1.URL = Application.StartupPath + drs2[0]["URL"].ToString(); axWindowsMediaPlayer1.Ctlcontrols.play(); } } } } } } } private void BVBMovieDemo_FormClosed(object sender, FormClosedEventArgs e) { if (objListerner != null) { ((HttpListener)objListerner).Abort(); } Application.Exit(); } private void BVBMovieDemo_MaximumSizeChanged(object sender, EventArgs e) { axWindowsMediaPlayer1.uiMode = "none"; } private void axWindowsMediaPlayer1_DoubleClickEvent(object sender, AxWMPLib._WMPOCXEvents_DoubleClickEvent e) { if (axWindowsMediaPlayer1.fullScreen) { axWindowsMediaPlayer1.fullScreen = false; } if (this.FormBorderStyle == FormBorderStyle.None) { this.FormBorderStyle = FormBorderStyle.FixedSingle; this.WindowState = FormWindowState.Normal; } else { this.FormBorderStyle = FormBorderStyle.None; this.WindowState = FormWindowState.Maximized; } } private void axWindowsMediaPlayer1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if (e.KeyCode == Keys.Escape && this.WindowState!= FormWindowState.Normal) { this.FormBorderStyle = FormBorderStyle.FixedSingle; this.WindowState = FormWindowState.Normal; } } private void axWindowsMediaPlayer1_ClickEvent(object sender, AxWMPLib._WMPOCXEvents_ClickEvent e) { //if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsPlaying) //{ // axWindowsMediaPlayer1.Ctlcontrols.pause(); //} //else if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsPaused) //{ // axWindowsMediaPlayer1.Ctlcontrols.play(); //} } }}

 

转载于:https://www.cnblogs.com/goto/p/4008289.html

你可能感兴趣的文章
字符串类型的相互转换
查看>>
基础学习:C#中float的取值范围和精度
查看>>
web前端面试题2017
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
关于 linux 的 limit 的设置
查看>>
MTK笔记
查看>>
激活office 365 的启动文件
查看>>
无法根据中文查找
查看>>
[简讯]phpMyAdmin项目已迁移至GitHub
查看>>
【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)
查看>>
fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程
查看>>
Awesome Adb——一份超全超详细的 ADB 用法大全
查看>>
shell cat 合并文件,合并数据库sql文件
查看>>
构建自己的项目管理方案
查看>>
利用pca分析fmri的生理噪声
查看>>
div水平居中且垂直居中
查看>>
epoll使用具体解释(精髓)
查看>>
AndroidArchitecture
查看>>
安装Endnote X6,但Word插件显示的总是Endnote Web"解决办法
查看>>
python全栈 计算机硬件管理 —— 硬件
查看>>