王 巍
(中國(guó)電信股份有限公司新疆分公司,新疆 烏魯木齊 830000)
隨著互聯(lián)網(wǎng)技術(shù)信息技術(shù)的迅猛發(fā)展以及計(jì)算機(jī)技術(shù)的廣泛應(yīng)用,即時(shí)通信IM(Instant Messaging)作為一種方便、高效、廉價(jià)的交流方式被廣泛運(yùn)用于局域網(wǎng)(LAN)乃至廣域網(wǎng)(WAN)。為人們的日常交流和資源共享以及傳送信息和文件提供了方便。即時(shí)通信(IM)軟件應(yīng)運(yùn)而生,且立即風(fēng)靡全球?,F(xiàn)在我國(guó)流行的 IM軟件產(chǎn)品種類繁多,主要有國(guó)內(nèi)騰訊公司的QQ,國(guó)外的MSN、Skype、ICQ、AIM、X-lite、Yahoo Messenger等。但在廣域網(wǎng)的限制下主流即時(shí)通信軟件服務(wù)器無(wú)法連接,這時(shí)開發(fā)局域網(wǎng)內(nèi)的即時(shí)通信軟件顯得尤為重要。
本軟件實(shí)現(xiàn)設(shè)計(jì)一個(gè)局域網(wǎng)即時(shí)通訊軟件,實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多即時(shí)通訊文件傳輸,方便在局域網(wǎng)下的人們工作與交流。
即時(shí)通信(Instant Messaging,IM)是隨著Internet發(fā)展起來(lái)的一種使人們能在網(wǎng)上識(shí)別在線用戶并與他們實(shí)時(shí)交換消息的實(shí)時(shí)通信技術(shù)。目前即時(shí)通信也包括文件傳送、文件共享和語(yǔ)音視頻通信等。與傳統(tǒng)的通信方式相比,具有方便、快捷和廉價(jià)等特點(diǎn)。
圖1 網(wǎng)絡(luò)通信軟件
該軟件是提供給局域網(wǎng)下普通工作人員的通訊軟件,沒有大量的數(shù)據(jù)錄入以及數(shù)據(jù)查詢等操作,所以該軟件不需要與數(shù)據(jù)庫(kù)集成,用戶選擇用戶名與頭像登陸后,就可以與在線的其他用戶進(jìn)行互聊傳輸文件等操作,可以自己存儲(chǔ)相關(guān)的聊天信息等。
用戶為一般工作人員,考慮到一般工作人員的計(jì)算機(jī)水平以及喜好,所以軟件界面不能太復(fù)雜,對(duì)于一般工作人員來(lái)說(shuō),他們登陸進(jìn)入到界面時(shí),除了要有吸引他們的界面外,還要讓他們一眼就可以看到可以互聊操作的對(duì)象,以及各個(gè)按鈕的功能作用,這里為每一個(gè)進(jìn)入用戶有相當(dāng)明顯的提示。
該軟件模型設(shè)計(jì)見圖1。
本軟件面向普通工作人員這個(gè)群體,該群體相對(duì)于計(jì)算機(jī)來(lái)說(shuō)的相同特征都是計(jì)算機(jī)水平較一般,甚至都有自己的聊天喜好,為了滿足用戶界面盡量效仿QQ等主流軟件,使用戶使用更加親切?;谶@些原因,軟件命名為“說(shuō)說(shuō)”。
與常規(guī)的通訊軟件不同,說(shuō)說(shuō)軟件的登陸界面不需要輸入用戶名、密碼等驗(yàn)證性的數(shù)據(jù),因?yàn)榫钟蚓W(wǎng)下每臺(tái)計(jì)算機(jī)都有一個(gè)固定的IP地址,基于P2P理論上無(wú)需連接遠(yuǎn)程服務(wù)器。只是要求用戶輸入自己的昵稱和選好自己的頭像即可點(diǎn)擊“進(jìn)入”,進(jìn)入到軟件主界面,在主界面的左邊的頭像欄里會(huì)顯示用戶剛才輸入的昵稱與姓名??紤]到用戶偏好登陸框基本采用QQ登陸框模型。本程序在此界面會(huì)得到所有的本機(jī)信息IP地址、廣播域、端口號(hào)、頭像號(hào)、昵稱。
在PC與PC之間建立互聯(lián)通訊的過(guò)程中最首要的需要了解兩點(diǎn)信息:一個(gè)是對(duì)方IP;一個(gè)是互聯(lián)端口。而在VB中為了實(shí)現(xiàn)網(wǎng)絡(luò)互連特意提供了一個(gè)winsock控件為PC機(jī)之間互聯(lián)建立了條件。只要在其屬性中稍加設(shè)置就可以實(shí)現(xiàn)基本的互聯(lián),同時(shí)判斷自己的IP段算出本機(jī)的廣播域。由于UDP的諸多問(wèn)題,本軟件全部使用TCP/IP作為互聯(lián)協(xié)議。
3.3.1 自動(dòng)載入信息的不同方式
在本程序中最為重要的過(guò)程,即實(shí)現(xiàn)局域網(wǎng)內(nèi)其他 PC機(jī)的自動(dòng)載入信息。通過(guò)判斷對(duì)方傳來(lái)的判斷數(shù)字這樣的方式,實(shí)現(xiàn)不同 PC機(jī)上的用戶進(jìn)行在線用戶頭像自動(dòng)載入,下線用戶頭像刪除。
(1)“我來(lái)了”向廣播域傳送(1+用戶名、IP地址、端口、主機(jī)名、頭像號(hào))。當(dāng)開啟本程序時(shí)向互聯(lián)過(guò)程下計(jì)算出的廣播域下的IP地址挨個(gè)發(fā)送此信息,提取確認(rèn)頭數(shù)字1后,分解內(nèi)容記錄后顯示在listview控件中,并以廣播的形式發(fā)送一個(gè)2,這是其他 PC機(jī)載入頭像與昵稱的基本條件,自己可以給自己的IP發(fā)送,實(shí)現(xiàn)自己的頭像顯示功能。
(2)“歡迎”傳送(2+用戶名、IP地址、端口、主機(jī)名、頭像號(hào))。PC機(jī)收到1時(shí)用其提供的信息進(jìn)行互聯(lián)并向回發(fā)送本機(jī)信息,提取確認(rèn)頭數(shù)字 2以后,記錄后分解內(nèi)容顯示在listview控件中,這用來(lái)確定對(duì)方也在線。這里是與其他PC機(jī)建立互聯(lián)關(guān)系的必要條件。
(3)傳送“再見”(5+空)。在其廣播域中發(fā)送,提取確認(rèn)頭數(shù)字5以后,顯示在listview控件中的相關(guān)內(nèi)容釋放。這里是其他 PC機(jī)刪除頭像與昵稱的基本條件,實(shí)現(xiàn)自己下線的顯示。
3.3.2 聊天的模式
如何載入分解的內(nèi)容成了本段功能的重中之重,讀取對(duì)方傳來(lái)的信息時(shí)頭數(shù)字后跟隨數(shù)據(jù)有:用戶名(即昵稱)、IP地址、端口、主機(jī)名、頭像號(hào)。我們對(duì)這段數(shù)據(jù)進(jìn)行提取在以后調(diào)用中使用。通過(guò)這樣的方式我們可以實(shí)現(xiàn),上線頭像載入、下線用戶頭像自動(dòng)刪除的功能,這里我們載入刪除的不是頭像,而是事先存在程序文件下頭像編號(hào)。同時(shí)我們還可以從頭判定數(shù)來(lái)判斷聊天模式。
(1)“單獨(dú)聊天內(nèi)容”傳送(3+用戶名、IP地址、端口、內(nèi)容)。判斷單獨(dú)聊天地址與其進(jìn)行連接進(jìn)行信息傳輸,在這種頭數(shù)字下的信息只有點(diǎn)對(duì)點(diǎn)之間的用戶可以看見,在通過(guò)對(duì)其IP和端口連接下讀取除判定信息后的聊天內(nèi)容。
(2)“共同聊天內(nèi)容”傳送(4+用戶名、IP地址、端口、內(nèi)容)。對(duì)所有連接上的PC機(jī)進(jìn)行消息傳輸,在這種頭數(shù)字下的信息要在廣播域進(jìn)行消息廣播,這里基本與單獨(dú)判定載入相同只是由其單點(diǎn)改成了對(duì)多點(diǎn)。
為了更好的體現(xiàn)本軟件的使用價(jià)值本程序還自帶文件傳輸功能。而文件傳輸主要分為單文件傳輸和目錄文件傳輸(多文件傳輸),本軟件使用VB 包中WinSock和WinSock建立TCP/IP直連進(jìn)行文件流傳送。
3.4.1 單文件傳輸
當(dāng)鼠標(biāo)雙擊某用戶頭像時(shí),會(huì)彈出與此用戶傳輸文件的信息窗口。需要向?qū)Ψ絺魉臀募?,可直接將此文件添加到此窗口,為此在窗口中加入用于說(shuō)明傳輸文件的簡(jiǎn)介,便于用戶確認(rèn)傳輸文件。先向?qū)Ψ桨l(fā)送確認(rèn)接收文件信息,啟動(dòng)TCP/IP協(xié)議。在進(jìn)行文件傳輸之前計(jì)算文件大小,并時(shí)刻記錄文件已傳輸?shù)拇笮∨c路徑。
3.4.2 多文件傳輸
文件傳輸還可實(shí)現(xiàn)將一文件夾下的多個(gè)文件一次性傳送。在傳送前系統(tǒng)會(huì)首先傳一個(gè)要傳送的多個(gè)文件名所形成的目錄文件,然后再依次傳送每個(gè)文件,對(duì)方每接收到一個(gè)文件,先對(duì)此文件在本地的存儲(chǔ)目錄進(jìn)行判斷,如果此目錄不存在,則建立此目錄,然后再發(fā)送確認(rèn)接收文件。接收成功后,循環(huán)接收下一個(gè)文件。
為了方便廣大的用戶,本軟件安裝只要一個(gè)主文件,其他相關(guān)文件設(shè)定為自動(dòng)生成。如每次登錄時(shí)軟件自動(dòng)讀取第一次生成的INI文件,在Windows系統(tǒng)中,INI文件很多,該文件主要存放用戶所做的選擇以及系統(tǒng)的各種參數(shù)。用戶可以通過(guò)修改INI文件,來(lái)改變應(yīng)用程序和系統(tǒng)的很多配置。在本程序中,INI文件自動(dòng)記錄上次登陸信息。
在主界面中選擇保存聊天記錄,會(huì)在當(dāng)前軟件所在路徑下生成CHATS.Txt,里面記錄了當(dāng)前聊天的所有信息。
本程序基本制作思想在于實(shí)現(xiàn)對(duì)等網(wǎng)互聯(lián)通訊的實(shí)現(xiàn),為了能直觀體現(xiàn)其對(duì)等網(wǎng)的特點(diǎn),必須制作出在線用戶自動(dòng)頭像自動(dòng)刷新、下線用戶頭像刪除的功能。設(shè)計(jì)之初,互聯(lián)信息的傳播使用UDP協(xié)議在廣播域中進(jìn)行,但后來(lái)發(fā)現(xiàn)其他PC機(jī)無(wú)法讀取到UDP傳來(lái)的信息,分析其原因在于局域網(wǎng)路由分配的IP段不符合其廣播域計(jì)算方式。后來(lái)采用了TCP/IP協(xié)議大大提高了信息傳播的準(zhǔn)確性與穩(wěn)定性,而廣播域算法也改成了取本機(jī)IP段最末位的1-255。從而實(shí)現(xiàn)了單路由下局域網(wǎng)的互聯(lián)通信組播的判斷。
目前,本軟件可以進(jìn)行單路由局域網(wǎng)的互聯(lián)數(shù)據(jù)傳輸,并計(jì)算出其廣播域以及本機(jī)IP地址。但是對(duì)于跨路由的PC互聯(lián)來(lái)說(shuō),由于受開發(fā)軟件及本人技術(shù)的限制,使軟件在計(jì)算跨路由廣播域時(shí)出錯(cuò),無(wú)法交換信息。再次本軟件由于VB控件的限制,很難實(shí)現(xiàn)對(duì)于多媒體流的傳輸實(shí)現(xiàn)。
利用 Visual Basic面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)開發(fā)的局域網(wǎng)即時(shí)通訊軟件,采用TCP/IP協(xié)議并通過(guò)及定義端口互聯(lián),這樣軟件的執(zhí)行會(huì)更加準(zhǔn)確方便,也使程序本身變得簡(jiǎn)單。最后,軟件實(shí)現(xiàn)了較強(qiáng)的通訊功能,通過(guò)局域網(wǎng)內(nèi)的互聯(lián)實(shí)現(xiàn)文件批量傳輸、斷點(diǎn)傳輸?shù)任募鬏敼δ?,基本?shí)現(xiàn)了用戶在局域網(wǎng)內(nèi)即時(shí)通訊的目的。
1 王繼魁. Linux下基于Shell腳本的聊天工具[J].吉林師范大學(xué)學(xué)報(bào),2009(1):122~124
2 周 敏、李鳳婷、吳為民.基于VB的PC機(jī)與多臺(tái)PLC的通信研究[J].計(jì)算機(jī)工程,2009(04):103~107
3 李長(zhǎng)林. Visual Basic串口通信技術(shù)與典型實(shí)例[M].北京:清華大學(xué)出版社,2006
4 張 巖. Delphi下的點(diǎn)對(duì)點(diǎn)聊天工具編程[A].計(jì)算機(jī)工程應(yīng)用技術(shù),2009(2):1239~1241
5 李遠(yuǎn)杰、劉渭鋒.主流即時(shí)通訊軟件通信協(xié)議分析[J].計(jì)算機(jī)應(yīng)用研究,2005(7)
6 汪發(fā)寶、樓新遠(yuǎn).基于P2P組播技術(shù)的局域網(wǎng)即時(shí)通信系統(tǒng)的實(shí)現(xiàn)[J].鐵路計(jì)算機(jī)應(yīng)用,2008(18)
7 王甜甜、郭全萍、馬培軍等.用指針實(shí)現(xiàn)的程序的標(biāo)準(zhǔn)化及其應(yīng)用[J].哈爾濱工業(yè)大學(xué)學(xué)報(bào),2009(41):48~53
8 斯蒂文斯.TCP/IP網(wǎng)絡(luò)互聯(lián)技術(shù)(卷 3)[M].北京:清華大學(xué)出版社,2004:156~203
9 李為民.基于網(wǎng)絡(luò)的遠(yuǎn)程運(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì)與研究[D].武漢:武漢理工大學(xué),2003
10 張傳偉、王昀睿. VB下PLC與PC串口通信的實(shí)現(xiàn)[J].控制與檢測(cè),2005(12):62~66