freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)項(xiàng)目(編輯修改稿)

2025-01-08 15:19 本頁面
 

【文章內(nèi)容簡介】 數(shù)據(jù)庫進(jìn)行交互都采用存儲(chǔ)過程。采用的原因除了上述外,還有因?yàn)橹苯邮褂?SQL或 TransactSQL會(huì)帶來安全方面的風(fēng)險(xiǎn),比如 Select語句字符串參數(shù)由于用戶的有意的輸入,會(huì)執(zhí)行超出用戶操作的權(quán)限。 數(shù)據(jù)庫分離和還原 對數(shù)據(jù)庫進(jìn)行移植,要先關(guān)閉數(shù)據(jù)庫服務(wù)器。啟動(dòng)企業(yè)管理器,如圖 對數(shù)據(jù)庫進(jìn)行分 離。 9 圖 企業(yè)管理器 數(shù)據(jù)庫文件移植到目標(biāo)機(jī)上后,打開企業(yè)管理器,如下圖 圖 附加數(shù)據(jù)庫選項(xiàng) 除了企業(yè)管理器也可以用 SQL 命令,分離數(shù)據(jù)庫運(yùn)行代碼: exec sp_detach_db dbname 其中 Dbname: 是數(shù)據(jù)庫名字。附加數(shù)據(jù)庫運(yùn)行代碼:sp_attach_db[@dbname=] ‘ dbname’ [@filename=] ‘ filename_n’ 其中dbname 是數(shù)據(jù)庫名字, filename_n 是數(shù)據(jù)庫文件絕對位置。 10 系統(tǒng)功能設(shè)計(jì) 系統(tǒng)共有兩個(gè)大的模塊,分別為服務(wù)器端模塊和客戶端模塊。客戶端用戶可以向服務(wù)器發(fā)送連接請求,連接被同意后,捕捉視頻設(shè)備的視頻數(shù)據(jù),然后經(jīng)過網(wǎng)絡(luò)發(fā)送 filter發(fā)送給服務(wù)器端。服務(wù)器端分為用戶管理和用戶操作,用戶管理是管理員對用戶添加、冊除、修改。操作,用戶操作是把接受視頻數(shù)據(jù)接受顯示在窗口上。系統(tǒng)功能模塊如圖 1:服務(wù)器模塊 圖 系統(tǒng)流程 1:服務(wù)器模塊 服務(wù)器模塊分為用戶管理模塊、連接接受模塊、視頻處理模塊。用 戶管理模塊包含用戶修改,主要是密碼的修改;冊除和增加用戶,只要管理員才有這權(quán)限。在登陸界面如果是以管理員的帳戶登陸會(huì)進(jìn)入用戶管理窗體,否則進(jìn)入視頻處理窗體。當(dāng)具有視頻查看權(quán)限的用戶登陸后會(huì)啟動(dòng)連接接受模塊,該模塊將啟動(dòng)基于 TCP協(xié)議的監(jiān)聽服務(wù)器 (TcpListener類 )監(jiān)聽遠(yuǎn)程的 TCP連接請求,采用異步委托方式。服務(wù)器能主動(dòng)關(guān)閉連接,在關(guān)閉前會(huì)發(fā)送消息來通知客戶端也關(guān)閉連接。網(wǎng)絡(luò)視頻數(shù)據(jù)接受 filter需要自己開發(fā),并用 Regsvc32命令注冊后才能使用。在DirectShow應(yīng)用層開發(fā)中只要把視頻顯示 filter、解碼 filter、接受 filter按一定順序連接起來,并運(yùn)行 DirectShow的 IMediaConrol接口的 Run方法,那樣視頻數(shù)據(jù)就象水流一樣從接受端流到顯示端顯示。其中視頻數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)協(xié)議采用RTP協(xié)議,需要 jthread和 jrtplib庫,服務(wù)器數(shù)據(jù)流圖如 系統(tǒng) 服務(wù)器 客戶端 用戶管理 視頻處理 視頻處理 連接請求 添加用戶 用戶冊除 用戶修改 連接接受 11 用戶 1 用戶 2 用戶 3 連接同意 連接不同意 不同意 圖 服務(wù)器數(shù)據(jù)流圖 2:客戶端模塊 客戶端模塊分為連接請求模塊、視頻處理模塊。當(dāng)用戶啟動(dòng)連接請求模塊后會(huì)發(fā)送 TCP連接請求,并等待服務(wù)器的同意,在發(fā)送前要設(shè)置配置信息。如果連接請求被接受,就會(huì)啟動(dòng)視頻處理模塊向服務(wù)器發(fā)送視頻數(shù)據(jù),并等待遠(yuǎn)程發(fā)來斷開消息。客戶端的連接請求如果超時(shí),將自動(dòng)斷開,超時(shí)時(shí)間大約在三十分鐘左右。網(wǎng)絡(luò)視頻發(fā)送 filter要自己開發(fā),并用 Regsvc32命令注冊后才能使 用。在DirectShow應(yīng)用層開發(fā)中,把網(wǎng)絡(luò)發(fā)送 filter、視頻捕獲 filter、編碼 filterl按一定順序連接起來,并運(yùn)行 DirectShow的 IMediaConrol接口的 Run方法,這樣視頻數(shù)據(jù)就會(huì)源源不斷的發(fā)送出去。其中視頻數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)協(xié)議采用 RTP協(xié)議,需要 jthread和 jrtplib庫客戶端數(shù)據(jù)流圖如圖 同意 不同意 圖 客戶端數(shù)據(jù)流圖 系統(tǒng)功能實(shí)現(xiàn) 整個(gè)系統(tǒng)組件部分采用 C++, DirectShow 應(yīng)用層開發(fā) 和其它功能都用 C完成, 面具體講述一下整個(gè)系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié)。 視頻接受 視頻解碼 視頻顯示 視頻接受 視頻解碼 視頻顯示 視頻顯示 視頻解碼 視頻接受 監(jiān)聽服務(wù)器監(jiān)聽請求 視頻捕獲源 視頻解碼 網(wǎng)絡(luò)發(fā)送 連接請求 關(guān)閉程序 關(guān)閉該條數(shù)據(jù)流 12 服務(wù)器用戶管理設(shè)計(jì) 用戶管理實(shí)現(xiàn)了用戶增加和冊除,如圖 圖 用戶管理界面 在添加用戶模塊中,用戶密碼采用 MD5。使用 間, 主要代碼如下: MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider()。 //這里 BitConverter類是用來把字節(jié)傳為字符串 ,count為加密后得到的位數(shù) string hashStr=(((pwd)),0, count)。 采用 C的 MD5加密類,能很方便的實(shí)現(xiàn) MD5加密,不過 MD5散列值的位數(shù)是根據(jù)操作系統(tǒng)不同而不同。本系統(tǒng)的開發(fā)環(huán)境最長只能是 32位,想要更長的話,可能需要安裝密碼服務(wù)軟件。 MD5編碼雖然保密性好,但是效率不是很高。但是本系統(tǒng)因?yàn)閷γ艽a的存取不頻繁,所以在性能上不會(huì)有很大影響。 服務(wù)器視頻處理模塊設(shè)計(jì) 視頻處理界面如圖 13 圖 用戶操作界面 只有設(shè)置配置信息后,才能查看視頻,保存視頻功能目前沒有實(shí)現(xiàn)。代碼如下: //當(dāng)窗體加載時(shí) = false。 if(!(filePath)) { 開放 textbox,設(shè)置 button。 關(guān)閉查看視頻 button。 } else { 關(guān)閉 textbox,設(shè)置 button。 開放查看視頻 button。 } 當(dāng)點(diǎn)擊‘設(shè)置’按鈕時(shí)發(fā)生 , 會(huì)把信息寫入 xml文件。其中 XmlTextWriter是把數(shù)據(jù)寫入 XML文檔中的類。 XmlTextWriter xtw = new XmlTextWriter(filePath, UTF8)。文件名使用 filePath = + @\。語句得到 , 語句的意思是應(yīng)用程序目錄下文件名為 。寫文件頭的方 法是 WriteStartDocument(),寫節(jié)點(diǎn)的方法是 WriteStartElement(),寫屬性方法是 WriteAttributeString(),寫節(jié)點(diǎn)的文本內(nèi)容方法是 WriteString(),最后寫完后調(diào)用 Flush(), Close()方法,以上方法都在 XmlTextWriter類中,當(dāng)配置文件已存在時(shí)讀取用戶信息從 XML文件用 XmlTextReader類 14 reader = new XmlTextReader(filePath)。 //對空白部分的處理方式 = 。 //讀取每個(gè)節(jié)點(diǎn) while (()) { if ((節(jié)點(diǎn)名 )) { (屬性名 )。 if ((屬性內(nèi)容 )) { //移動(dòng)到該屬性的節(jié)點(diǎn)上 ()。 //根據(jù)屬性內(nèi)容來對節(jié)點(diǎn)文本作相應(yīng)的處理,這里 //屬性內(nèi)容是 string,所以把節(jié) 點(diǎn)內(nèi)容轉(zhuǎn)化為字符串 ip = ().Trim()。 } } } if(reader != null) ()。 Xml配置文件如圖 圖 xml文檔 當(dāng)點(diǎn)擊查看視 頻按鈕 , 主線程將啟動(dòng)一個(gè)線程來監(jiān)聽客戶端 , 每當(dāng)有用戶連接并同意的話 , 在監(jiān)聽客戶端線程啟動(dòng)一個(gè)線程來處理視頻顯示。監(jiān)聽客戶端線程應(yīng)該是一直運(yùn)行著所以是循 環(huán)的方式,循環(huán)退出條件應(yīng)該在主線程結(jié)束時(shí)設(shè) 15 置,這樣當(dāng)主線程退出時(shí),那么監(jiān)聽客戶端線程也將退出。為了使線程間保持同步性,退出條件變量被設(shè)置為只在主線程退出的地方修改。監(jiān)聽客戶端方式采用異步委托,因?yàn)槿绻捎猛椒绞?,那么程序?huì)發(fā)生阻塞那么當(dāng)主線程設(shè)置退出條件變量后將不產(chǎn)生效果,所以不會(huì)使程序完全退出。采用異步方式,程序不會(huì)阻塞,而是繼續(xù)執(zhí)行下面語句,那么循環(huán)判斷將會(huì)得到執(zhí)行,從而使程序完全退出。具體的代碼實(shí)現(xiàn)如下: private ManualResetEvent tcpClientConnected = new ManualResetEvent(false)。 //RunServer 方法實(shí)現(xiàn)了監(jiān)聽客戶端功能 Thread newThread = new Thread(new ThreadStart())。 //線程啟動(dòng) ()。 pirvate void RunServer() { DoBeginAcceptTcpClient(listener)。 } private void DoBeginAcceptTcpClient(TcpListener listener) { while (isRun) { ()。 (new AsyncCallback(DoAcceptTcpClientCallback), listener)。 // Wait until a connection is made and processed before // continuing. ()。 } } private void DoAcceptTcpClientCallback(IAsyncResult ar) { TcpListener listener = (TcpListener)。 TcpClient client = (ar)。 //在此插入處理代碼 ()。 } } 當(dāng)服務(wù)器器運(yùn)行時(shí),會(huì)出現(xiàn)以下截面,如圖 16 圖 服務(wù)器啟動(dòng)界面 當(dāng)客戶端到達(dá)時(shí),會(huì)出現(xiàn)如下界面,如圖 圖 有遠(yuǎn)程客戶連接請求時(shí)的界面 當(dāng)點(diǎn)擊確定時(shí),把用戶信息加入 Listbox控件圖 17 圖 用戶連接列表 然后 啟動(dòng)視頻接受啟動(dòng),先在程序里尋找接受 Filter、解碼 filter、顯示 filter。再尋找 filter上的 pin接口,找到后,按需要的順序連接起來,連接好后,運(yùn)行IMediaControl的 Run方法,那么只要數(shù)據(jù)一到達(dá)接受 filter,就會(huì)立刻發(fā)送到顯示 filter顯示。尋找 filter的代碼如下: IEnumMoniker classEnum = null。 IMoniker[] moniker = new IMoniker[1]。 ICreateDevEnum devEnum = (ICreateDevEnum)new CreateDevEnum()。//Create the system
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1