飛鴿傳書2007綠色版是一款區域網路內即時通信軟體,基於TCP/IP(UDP)。支持區域網路間發信息、傳送檔案、資料夾、多檔案(或資料夾),速度非常快,可以與飛秋,懶Q進行互通。
可運行於多種操作平台(Win/Mac/UNIX/Java)。並實現跨平台信息交流。不需要伺服器支持,支持檔案/資料夾的傳送(2.00版以上)。
通訊數據採用RSA/Blofish加密(2.00版以上)。十分小巧,簡單易用,而且用戶可以完全免費使用它。目前已有的版本包括:Win32,Win16,MacOS,MacOSX,X11,GTK,GNOME, Java等,並且公開原始碼。
基本介紹
- 中文名:飛鴿傳書2007綠色版
- 軟體分類: 網路軟體(聊天通訊)
- 支持語言: 簡體中文
- 軟體大小:78KB
軟體信息,操作技巧,軟體特色,軟體原理,
軟體信息
作業系統: Windows 95/98/Me/NT/2000/XP
操作技巧
1. 隱藏/顯示 視窗 Ctrl + D
2. 按住 Ctrl 鍵再點 [刷新] 可保持現有用戶, 搜尋新上線的用戶
3. 打開發送/接收訊息視窗 Ctrl + Alt + S / R (需要進行詳細設定)
4. 打開搜尋視窗 Ctrl + F
5. 接收到多個檔案, 保存時可勾選 [全部]
軟體特色
- 不需要伺服器支持.
- 支持檔案/資料夾的傳送 (2.00版以上)
- 通訊數據採用 RSA/Blofish 加密 (2.00版以上)
- 十分小巧, 簡單易用, 而且你可以完全免費使用它
- 目前已有的版本包括: Win32, Win16, MacOS, MacOSX, X11, GTK, GNOME,Java 等, 並且公開原始碼.
軟體原理
開發多年的飛鴿,在他的基礎上增加了些許功能,例如語音對話,這裡繼續討論FreeEIM(飛鴿傳書),前幾天,詳細的了解了FreeEIM(飛鴿傳書)的網路協定,詳細分析並且實現了FreeEIM(飛鴿傳書)的訊息傳遞過程,這裡就FreeEIM(飛鴿傳書)中的檔案和資料夾的傳輸做詳細的說明。
在FreeEIM(飛鴿傳書)中,如果要進行檔案或者資料夾的傳輸,首先需要做的就是訊息的應答,通過UDP傳送檔案傳輸報文,另外的FreeEIM(飛鴿傳書)客戶端收到報文後,使用TCP協定傳送應答報文,這樣就開始進行檔案的傳輸了。
這裡開啟兩個執行緒,執行緒1負責檔案的傳送,執行緒2負責檔案的接受,下邊做一一說明。 首先,我們知道,可以傳送多個檔案,這些檔案需要建立鍊表保存信息。
typedefstructfile_info
structfile_info*next;//雙向鍊表
structfile_info*forward;
char*file;//檔案名稱
inttype;//檔案類型:檔案或者資料夾
intsize;//檔案大小
structsockaddr_inaddr,//目標網路信息
}FILE_INFO;
檔案傳送鍊表由專門的執行緒維護,這樣,執行緒1就可以專心進行處理檔案傳輸佇列就可以了,執行緒1始終查詢這個鍊表,如果表頭為NULL,就說明沒有要傳輸的檔案,表頭非空,就開始傳送報文,獲得正確的應答後,就可以開始檔案的傳輸了,檔案傳輸結束,將相應的鍊表節點刪除。這裡借鑑了很多程式中使用非常廣泛的“命名池”相關的概念,只不過這裡我們使用的是“檔案池”,可以這么認為,如果有檔案要傳輸,可以不用考慮是否有檔案正在傳輸,只要把要傳輸的檔案放入“檔案池”就可以了,同時,不用考慮“檔案池”的大小,執行緒1是檔案池的服務執行緒,它檢測檔案池的大小,如果非空,就會逐次傳輸檔案。
這裡需要特別注意的就是關於資料夾的傳輸,這個FreeEIM(飛鴿傳書)一個難點,因為對於資料夾的內容是沒有顯示的,需要我們逐次的判斷,在飛鴿傳書中是這么處理的,如果是一個資料夾,就傳送檔案屬性為IPMSG_FILE_DIR的信息包,FreeEIM(飛鴿傳書)客戶端收到這個信息包後,就創建這個資料夾,然後發起傳送的FreeEIM(飛鴿傳書)客戶端,進入資料夾,傳送資料夾內的檔案,如果該資料夾下,還有資料夾,使用相同的方法,在資料夾內的檔案傳送結束後,就傳送FREEEIM_FILE_RETPARENT信息包,接受的FREEEI_FILE_RETP報文的FreeEIM(飛鴿傳書)客戶端,執行返回上一級目錄,FreeEIM(飛鴿傳書)傳送端,就需傳送目錄下的檔案。這樣循環操作,最終完成檔案的傳輸,這個過程比較難以理解。
有了上邊的知識,開發檔案傳輸功能就變得簡單多了,檔案的接受也可以類推了,同樣開啟一個執行緒維護接受檔案鍊表,逐次接受身下的檔案,鍊表為空時。檔案傳輸會遇到檔案讀寫問題,有的檔案傳送是被打開了,這樣會造成訪問違規,所以要有相應的處理,才能讓程式更加穩健。
程式啟動時先讀取用戶配置檔案,一般是"*.ini"格式,然後,使用Winsock的廣播訊息給整個區域網路傳送一個數據包,這時候,如果其他電腦已經運行了飛鴿傳書,那么他收到這個包後,會將包的信息讀取出來,當然,這個包里有用戶的IP,用戶名,性別等等。這樣,在用戶列表里就多了一個用戶了。他的用戶檢查方式就如此簡單而已。至於跨網段的實現,只需簡單地修改一下廣播地址就行了,如果不考慮速度,用戶可以給整個internet發廣播訊息。訊息傳送,檔案傳輸這些功能,都比較簡單,如果用戶會網路編程,給用戶對方IP位址,這些功能實現起來再簡單不過了。語音、視屏等,只需編寫一些語音視頻採集代碼,傳書的話,就像傳檔案一樣;這裡給段廣播訊息的實現代碼吧。