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

正文內(nèi)容

基于網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的設(shè)計-資料下載頁

2025-06-27 21:23本頁面
  

【正文】 信息; NetworkStream 類則提供用于25網(wǎng)絡(luò)訪問的基礎(chǔ)數(shù)據(jù)流等,常見的許多 Inter 服務(wù)都可以見到 Socket 的蹤影,如 Tel、Http、Email、Echo 等,這些服務(wù)盡管通訊協(xié)議 Protocol 的定義不同,但是其基礎(chǔ)的傳輸都是采用的 Socket。其實,Socket 可以象流Stream 一樣被視為一個數(shù)據(jù)通道,這個通道架設(shè)在應(yīng)用程序端(客戶端)和遠(yuǎn)程服務(wù)器端之間,而后,數(shù)據(jù)的讀取(接收)和寫入(發(fā)送)均針對這個通道來進(jìn)行。可見,在應(yīng)用程序端或者服務(wù)器端創(chuàng)建了 Socket 對象之后,就可以使用 Send/SentTo 方法將數(shù)據(jù)發(fā)送到連接的 Socket,或者使用Receive/ReceiveFrom 方法接收來自連接 Socket 的數(shù)據(jù);針對 Socket 編程,.NET 框架的 Socket 類是 Winsock32 API 提供的套接字服務(wù)的托管代碼版本。其中為實現(xiàn)網(wǎng)絡(luò)編程提供了大量的方法,大多數(shù)情況下,Socket 類方法只是將數(shù)據(jù)封送到它們的本機(jī) Win32 副本中并處理任何必要的安全檢查。在使用之前,你需要首先創(chuàng)建 Socket 對象的實例,這可以通過 Socket 類的構(gòu)造方法來實現(xiàn):Socket(addressFamily,SocketType, protocolType);其中,addressFamily 參數(shù)指定 Socket 使用的尋址方案,SocketType 參數(shù)指定 Socket 的類型,protocolType 參數(shù)指定 Socket 使用的協(xié)議。 一旦創(chuàng)建 Socket,在客戶端,你將可以通過 Connect 方法連接到指定的服務(wù)器,并通過 Send/SendTo 方法向遠(yuǎn)程服務(wù)器發(fā)送數(shù)據(jù),而后可以通過Receive/ReceiveFrom 從服務(wù)端接收數(shù)據(jù);而在服務(wù)器端,你需要使用 Bind 方法綁定所指定的接口使 Socket 與一個本地終結(jié)點相聯(lián),并通過 Listen 方法偵聽該接口上的請求,當(dāng)偵聽到用戶端的連接時,調(diào)用 Accept 完成連接的操作,創(chuàng)建新的 Socket 以處理傳入的連接請求。使用完 Socket 后,記住使用 Shutdown 方法禁用 Socket,并使用 Close 方法關(guān)閉 Socket。其間用到的方法/函數(shù)有:1) public void Connect(EndPoint remoteEP)。建立到遠(yuǎn)程設(shè)備的連接2) public int Send(byte[], int, SocketFlags)。從數(shù)據(jù)中的指示位置開始將數(shù)據(jù)發(fā)送到連接的 Socket。3) public int SendTo(byte[], EndPoint)。將數(shù)據(jù)發(fā)送到特定終結(jié)點。4) public int Receive(byte[],int,SocketFlags)。將數(shù)據(jù)從連接的 Socket 接收到接收緩沖區(qū)的特定位置。5) public int ReceiveFrom(byte[], int, SocketFlags, ref EndPoint)。接收數(shù)據(jù)緩沖區(qū)中特定位置的數(shù)據(jù)并存儲終結(jié)點。6) public void Bind( EndPoint localEP )。使 Socket 與一個本地終結(jié)點相關(guān)聯(lián)。267) public void Listen( int backlog )。將 Socket 置于偵聽狀態(tài)。8) public Socket Accept()。創(chuàng)建新的 Socket 以處理傳入的連接請求。9) public void Shutdown( SocketShutdown how )。禁用某 Socket 上的發(fā)送和接收。10) public void Close()。強(qiáng)制 Socket 連接關(guān)閉。以上許多方法包含 EndPoint 類型的參數(shù),在 Inter 中,TCP/IP 使用一個網(wǎng)絡(luò)地址和一個服務(wù)端口號來唯一標(biāo)識設(shè)備。網(wǎng)絡(luò)地址標(biāo)識網(wǎng)絡(luò)上的特定設(shè)備;端口號標(biāo)識要連接到的該設(shè)備上的特定服務(wù)。網(wǎng)絡(luò)地址和服務(wù)端口的組合稱為終結(jié)點,在 .NET 框架中正是由 EndPoint 類表示這個終結(jié)點,它提供表示網(wǎng)絡(luò)資源或服務(wù)的抽象,用以標(biāo)志網(wǎng)絡(luò)地址等信息。.Net 同時也為每個受支持的地址族定義了 EndPoint 的子代;對于 IP 地址族,該類為 IPEndPoint。IPEndPoint 類包含應(yīng)用程序連接到主機(jī)上的服務(wù)所需的主機(jī)和端口信息,通過組合服務(wù)的主機(jī) IP 地址和端口號,IPEndPoint 類形成到服務(wù)的連接點。用到 IPEndPoint 類的時候就不可避免地涉及到計算機(jī) IP 地址,.Net 中有兩種類可以得到 IP 地址實例:IPAddress 類。IPAddress 類包含計算機(jī)在 IP 網(wǎng)絡(luò)上的地址。其 Parse方法可將 IP 地址字符串轉(zhuǎn)換為 IPAddress 實例。Dns 類:向使用 TCP/IP Inter 服務(wù)的應(yīng)用程序提供域名服務(wù)。其 Resolve 方法查詢 DNS 服務(wù)器以將用戶友好的域名映射到數(shù)字形式的 Inter 地址。 Resolve 方法 返回一個 IPHostEnty 實例,該實例包含所請求名稱的地址和別名的列表。大多數(shù)情況下,可以使用 AddressList 數(shù)組中返回的第一個地址。也可以使用 GetHostName 方法得到 IPHostEntry 實在使用以上方法時,你將可能需要處理 2 種異常。1)SocketException 異常。訪問 Socket 時操作系統(tǒng)發(fā)生錯誤引發(fā) ArgumentNullException 異常,參數(shù)為空引用引發(fā) 。2)ObjectDisposedException 異常。Socket 已經(jīng)關(guān)閉引發(fā)。 確定了遠(yuǎn)程設(shè)備的地址并選擇了用于連接的端口后,應(yīng)用程序可以嘗試建立與遠(yuǎn)程設(shè)備的連接。Socket 類支持兩種基本模式:同步和異步。其區(qū)別在于:在同步模式中,對執(zhí)行網(wǎng)絡(luò)操作的函數(shù)(如 Send 和 Receive)的調(diào)用一直等到操作完成后才將控制返回給調(diào)用程序。在異步模式中,這些調(diào)用立即返回。 另外,很多時候,Socket 編程視情況不同需要在客戶端和服務(wù)器端分別予以實現(xiàn),在客戶端編制應(yīng)用程序向服務(wù)端指定端口發(fā)送請求,同時編制服務(wù)端27應(yīng)用程序處理該請求。遠(yuǎn)程主機(jī)指定端口接受到這一請求后,就可利用其公用服務(wù)。 客戶端仿真程序設(shè)計與實現(xiàn)在整個網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)中,本文最重要的也是工作量最大的部分就是客戶端視頻圖像的接收模塊,由于未能有相應(yīng)的硬件發(fā)送數(shù)據(jù)端,所以下面我們將以本機(jī)同時作為服務(wù)端和客戶端進(jìn)行通信,從而模擬視頻數(shù)據(jù)的收發(fā),實現(xiàn)視頻監(jiān)控。 仿真程序模塊劃分根據(jù)實際的應(yīng)用需要在本系統(tǒng)中,客戶端軟件的功能主要分為以下幾個模塊:1)連接服務(wù)模塊。此模塊是其它幾個模模塊能夠工作的前提,只有在客戶端連接到服務(wù)端后才能進(jìn)行相關(guān)圖像及視頻數(shù)據(jù)的抓取和保存。2)圖像采集模塊。通過該模塊,用戶可以將接收到的視頻數(shù)據(jù)根據(jù)需要保存為圖像。3)視頻采集模塊。通過該模塊,用戶可以將接收到的視頻數(shù)據(jù)根據(jù)需要保存為視頻文件。4)播放視頻模塊。不管是為了娛樂還是為了觀看監(jiān)控現(xiàn)場的視頻,這個模塊主要是用來觀看用戶已經(jīng)錄制好的視頻文件,從而保證即使沒有相應(yīng)的播放器,用戶也可以觀看保存下來的視頻,當(dāng)然也可以在一定的程度上節(jié)省了打開其它播放器的時間和節(jié)省系統(tǒng)資源。5)界面顯示模塊。用戶可以自己定制自己想要的界面,畢竟任何一個不變界面能滿足所有用戶的喜好,所以這個模塊極大地體現(xiàn)了客戶程序的開放性和自定義性,能夠讓用戶定義背景顏色或者字體。6)信息顯示模塊。用來顯示相關(guān)的連接服務(wù)端的信息及其在抓拍圖像或者錄像過程中遇到的一些異常情況。方便出現(xiàn)問題時有據(jù)可依。 連接服務(wù)模塊服務(wù)連接模塊的相關(guān)項如圖 16 所示。28圖 16 連接服務(wù)模塊連接服務(wù)模塊的相關(guān)流程如圖 17。圖 17 連接服務(wù)器流程圖1) 設(shè)置服務(wù)器端的 IP 地址。在啟動客戶端軟件后,第一件要做的事就是設(shè)置 IP 地址,為了保存用戶設(shè)置的 IP 地址,在程序中定義了一個類型為是是否否設(shè)置服務(wù)端 IP 地址合法 IP 地址?連接服務(wù)器成功?斷開服務(wù) 錄像抓圖提示信息29IPAddress 的變量: ipaddress(見附錄 D,如有特別說明,否則本章所有的變量及方法均出自附錄 D),當(dāng)用戶在 serverIPAddressWindow 中輸入正確的 IP 地址后將會通過其構(gòu)造函數(shù)傳給 MonitoringWindow 中的 ipaddress。在此我們必須要解決在兩個窗體間進(jìn)行通信的問題,一個可行的并且已經(jīng)證明是不錯的方法是在 serverIPAddressWindow 類中添加一個 videoWindow(videoWindow 是MonitoringWindow 窗體中的一個類)類型的變量,并在 MonitoringWindow 窗體中創(chuàng)建 serverIPAddressWindow 窗體的時候?qū)⒈旧碜鳛樽兞總魅搿S捎谠?C中類是引用類型的所以任何在 serverIPAddressWindow 中對 videoWindow 的改變都會反應(yīng)到 videoWindow 本身。從而當(dāng) serverIPAddressWindow 重新設(shè)置 IP 地址時新的 IP 地址將會被保存在 videoWindow 的 ipaddress 中。serverIPAddressWindow 的構(gòu)造函數(shù)為:public ServerIPAddressWindow(VideoWindow vw);在 MonitoringWindow 中創(chuàng)建 serverIPAddressWindow 時用 this 代替 vw 即可。由于 IP 地址是由有限的數(shù)字范圍組成的(每個段的 IP 數(shù)字為 0255) ,而不能是其它的字符,為了保證輸入的 IP 地址的正確性,必須在給 ipaddress 傳遞值之前對其進(jìn)行相應(yīng)的處理,從而確保在連接服務(wù)器的時候不會發(fā)生連接不上服務(wù)的情況。所以對于任何輸入大于 255 或者小于 0 的值的時候?qū)⒉唤oipaddress 傳值并且將文本框的背景置紅色予以提示,對于任何輸入不是數(shù)字的字符,在鍵盤將值傳給系統(tǒng)之前,程序?qū)⒔厝∠嚓P(guān)消息而不予以處理這樣文本框中就不會顯示。關(guān)鍵代碼如下:if (( 48 || 57) amp。amp。 ( != 8)) = true。在輸入正確的IP地址后,為了讓程序界面看起來更加簡潔,則可以隱藏serverIPAddressWindow窗體。調(diào)用方法Hide()即可。當(dāng)用戶重新要輸入IP地址的時候調(diào)用Show()方法即可顯示serverIPAddressWindow窗體。2) 連接服務(wù)器。在設(shè)置了正確的 IP 地址后,ipaddress 已經(jīng)存儲了正確的 IP 地址,于是利用 ipaddress 可以開始初始化 ipEndPoint 對象,代碼如下:ipEndPoint = new IPEndPoint(ipaddress, portNumber)。由于在服務(wù)端程序已經(jīng)將端口號綁定為 8888,所心在初始化 portNumber時它的值也設(shè)置成了 8888,通過初始化 ipEndPoint 我們可以找到服務(wù)器所在的地址,當(dāng)然要想與服務(wù)器進(jìn)行通信必須創(chuàng)建 Socket 對象,如下:clientSocket = new Socket(, , );30然后調(diào)用 ConnectServer()函數(shù)與服務(wù)器進(jìn)行連接。如果成功連接上了服務(wù)器則置標(biāo)志 isSuccessedToConnectServer 為 true。如果失去了同服務(wù)器的連接則置 isSuccessedToConnectServer 為 false,通過判斷isSuccessedToConnectServer 的值決定是否向服務(wù)端發(fā)送請求,從而可以避免因失去連接后向服務(wù)器發(fā)送請求產(chǎn)生異常。3) 斷開與服務(wù)器的連接。調(diào)用 ()方法即可斷開與服務(wù)器的連接并置 isSuccessedToConnectServer 為 false,但并不會釋放所有的相關(guān)資源,只是暫時不與服務(wù)器通信而已,當(dāng)用戶下次連接服務(wù)器的時候會使用保存在 ipaddres 中的值重新與服務(wù)器建立連接,而不必重新啟動客戶端應(yīng)用程序。4) 退出程序。斷開與服務(wù)器的連接,停止接收數(shù)據(jù),釋放所有資源,關(guān)閉應(yīng)用程序。 圖像采集模塊連接服務(wù)器成功后,客戶端便開始向服務(wù)器發(fā)送請求,開始接收數(shù)據(jù)。流程如圖 18。接收完成否否接收數(shù)據(jù)是否等待服務(wù)響應(yīng)未斷開連接?網(wǎng)絡(luò)流可寫?發(fā)送請求線程休眠網(wǎng)絡(luò)流可讀?線程休眠是是31成功接收到來自服務(wù)器的圖像數(shù)據(jù)后,用戶即可以對圖像加以抓拍保存。按成功接收到數(shù)據(jù)后,便可以進(jìn)行數(shù)據(jù)存儲。抓拍方式不同可以分為兩類:1) 單拍。默認(rèn)情況下,我們使用的是單拍,為了保證程序的正常運(yùn)行,必須將所有與多拍有關(guān)的選項標(biāo)志為不可用。在圖像采集模塊中與多拍有關(guān)的主要項為“每幀間距”和“連拍次數(shù)” 。通過將它們的 Enable 屬性置為 false 即可達(dá)到禁用的目的。于是在用戶每一次調(diào)用 GrabOneFrameImage()的時候只保存一幀圖像到指定的位置。2) 多拍。多拍時為了設(shè)置相關(guān)的每幀間距和連拍次數(shù),將“每幀間距”和“連拍次數(shù)”的 Enable 屬性置為 true 便可以重新使用它們。程序中用于存儲每幀間距的變量為 intervalBetweenTwoFrame(以秒為單位),用于存儲連拍次數(shù)的變量為
點擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1