資源描述:
《基于tcp協(xié)議c#多線程數(shù)據(jù)采集程序設(shè)計(jì)及實(shí)現(xiàn)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、基于TCP協(xié)議C#多線程數(shù)據(jù)采集程序設(shè)計(jì)及實(shí)現(xiàn)摘要:該文闡述TCP通信的原理,多線程的概念,進(jìn)行了一個(gè)多線程數(shù)據(jù)接收程序的設(shè)計(jì),并使用C#編碼實(shí)現(xiàn)。關(guān)鍵詞:多線程;C#;TCP中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)36-8624-02某項(xiàng)目有一批終端設(shè)備定時(shí)發(fā)送定位信息到指定的服務(wù)器,服務(wù)器接收到信息處理后保存到數(shù)據(jù)庫,以備后續(xù)顯示使用。終端設(shè)備同服務(wù)器間通信釆用TCP協(xié)議,一次信息發(fā)送完成后終端設(shè)備和服務(wù)器連接斷開。設(shè)備之間沒有信息交流,互相獨(dú)立。信息發(fā)送的時(shí)間由終端設(shè)備自行決定。1關(guān)鍵技術(shù)1.1TCP通信
2、原理TCP協(xié)議是傳輸控制協(xié)議,適用于點(diǎn)到點(diǎn),可靠通信。把通信發(fā)起方稱為客戶,把客戶要通信的另一方稱為服務(wù)器??蛻舭颜埱蟀l(fā)給服務(wù)器,服務(wù)器收到客戶的請求后提供服務(wù)。所以,TCP通信有兩方,客戶和服務(wù)器。在本應(yīng)用中,終端設(shè)備是TCP客戶,接收程序是TCP服務(wù)器。1.2多線程線程是程序中的一個(gè)執(zhí)行流。是CPU調(diào)度和分派的基本單位。一個(gè)進(jìn)程可以包含一個(gè)或多個(gè)線程,并且同一個(gè)進(jìn)程內(nèi)的多個(gè)線程共享一塊內(nèi)存和資源。2需求分析結(jié)合上述技術(shù)分析和應(yīng)用要求,本應(yīng)用中的終端機(jī)是TCP客戶,要開發(fā)的程序是TCP服務(wù)器,用于接收TCP客戶發(fā)送的定位信息并保存到數(shù)據(jù)庫。終端
3、設(shè)備有多臺,且它們之間沒有聯(lián)系,任何終端信息發(fā)送時(shí)間是隨機(jī)的。3系統(tǒng)分析TCP協(xié)議要求通信雙方首先要建立連接,然后雙方才能進(jìn)行信息的交流,最后撤除連接。服務(wù)器應(yīng)設(shè)置有監(jiān)聽端口,工作在監(jiān)聽狀態(tài)。當(dāng)客戶想同服務(wù)器通信時(shí),客戶可以向該端口發(fā)送連接請求,服務(wù)器收到連接請求后,可以建立新的通信鏈路以便客戶和服務(wù)器進(jìn)行信息交流。等到客戶的通信結(jié)束后,服務(wù)器返回監(jiān)聽狀態(tài)。在返回監(jiān)聽狀態(tài)之前,服務(wù)器不能為其他客戶提供服務(wù),因此,在單線程模式,當(dāng)前客戶同服務(wù)器間的通信未結(jié)束前,其他客戶無法連接服務(wù)器,只有等到它們的通信結(jié)束,服務(wù)器重新回到監(jiān)聽狀態(tài)。這顯然是低效的,
4、不合理的。為了快速的為更多的客戶服務(wù),服務(wù)器應(yīng)盡快地回到監(jiān)聽狀態(tài)。為了到達(dá)此目的,只有采用多線程工作模式。即,服務(wù)器同客戶建立連接后,服務(wù)器和客戶的通信和連接的撤除交由新的線程完成,自己迅速返回到監(jiān)聽狀態(tài),這必然的縮短了其他客戶的等待時(shí)間,提高了信息傳輸?shù)男省?系統(tǒng)設(shè)計(jì)設(shè)計(jì)思路:建立一個(gè)TCP服務(wù)器,運(yùn)行后在指定的端口監(jiān)聽,當(dāng)收到客戶的連接請求后,會創(chuàng)建新的線程負(fù)責(zé)隨后的雙方的通信,自己則回到監(jiān)聽狀態(tài)繼續(xù)監(jiān)聽有無其他客戶連接請求。新創(chuàng)建的線程在完成數(shù)據(jù)的接收后,斷開連接,釋放資源。6測試及結(jié)果分析測試過程:運(yùn)行本服務(wù)程序,設(shè)置本機(jī)監(jiān)聽端口和協(xié)議
5、,進(jìn)入監(jiān)聽狀態(tài)。設(shè)置終端設(shè)備的數(shù)據(jù)接收服務(wù)器IP地址為114.96.57.176(需在路由器做映射到內(nèi)網(wǎng)IP地址:192.168.1.100),端口為5000,程序接收到終端設(shè)備發(fā)送的位置信息。結(jié)果見圖2。圖2程序運(yùn)行顯示界面截圖從圖2顯示的信息看,信息已正確接收,程序運(yùn)行正常。參考文獻(xiàn):[1]RobinsonS.C#高級編程[M].北京:清華大學(xué)出版社,2002.[2]CasadJ.TCP/IP入門經(jīng)典[M].井中月,譯.北京:人民郵電出版社,2009.[1]周有杰.VisualC#.Net網(wǎng)絡(luò)核心編程[M].北京:清華大學(xué)出版社,2002.