每次ipmsg在收到上線通告報文後,都要查詢相同ip的節點是否已經存在,只要和結構 體成員host_ip比較就可以了,這樣整個使用者列表當中的成員是不會重複的。報文的傳送主要依靠下邊的函式實現,這裡推薦下邊的這種寫法,特別是對與命 令比較多的情況下,使用下邊的好處就在與結構非常的清晰。
mode: 命令 msg: 附加資訊 struct
sockaddr
*p:網路資訊 fd:網路套接字描述符
int msg_send(
const
int mode,
const
char
* msg,
const
struct
sockaddr
* p,
int fd)
elseif(
( p!=null)&&
( mode!=ipmsg_nooperation)&&
( mode!=ipmsg_br_entry)&&
( mode!=ipmsg_br_exit)
)client=
* p;
//開啟廣播if(
setsockopt
( udp_fd, sol_socket, so_broadcast,
& broadcast_en, broadcast_len)
< 0 )
switch
( mode)
broadcast_en= 0;
// 關掉廣播if(
setsockopt
( udp_fd, sol_socket, so_broadcast,
& broadcast_en, broadcast_len)
< 0 )
printf
("msg send ok ! /n");
return 0;}
通過上邊的報文就可以實現訊息的傳遞,可以發起檔案、資料夾的傳輸,傳輸檔案時,首先需要通過udp報文聯絡,在udp報文聯絡好之後,隨即發起tcp檔案傳輸,檔案傳輸是不帶格式的。ipmsg的乙個難點就是資料夾的傳輸。今天就寫這裡,而卻也做到這裡。
IPMsg飛鴿傳書網路協議解析手記
相信很多人都使用過飛鴿傳書,這個小工具在區域網傳輸資料高效而便捷,自己在大二的時候就想看看飛鴿傳書的原始碼,但那時候自己的水平有限,這幾天有機會重寫飛鴿傳書,也對ipmsg的網路協議做了深入的研究,這裡也要感謝ipmsg的作者公開源 ipmsg可以用於收發訊息和檔案 夾 使用udp協議收發訊息使用t...
IPMSG 飛鴿傳書 協議翻譯
最近看到一些朋友在編寫網路程式是遇到一些問題,故把以前做ipmsg時翻譯的文件貼過來,希望對網路程式設計新手有所幫助,在尋找程式設計專案的同學們也可參照此文件寫出自己的ipmsg。本文只包含其中幾個比較重要的命令以及執行機制的中文翻譯,更詳細的內容請參照文後的ipmsg 協議英文文件 宣告 下述協議...
IPMSG飛鴿傳書3 協議翻譯
最近看到一些朋友在編寫網路程式是遇到一些問題,故把以前做ipmsg時翻譯的文件貼過來,希望對網路程式設計新手有所幫助,在尋找程式設計專案的同學們也可參照此文件寫出自己的ipmsg。本文只包含其中幾個比較重要的命令以及執行機制的中文翻譯,更詳細的內容請參照文後的ipmsg 協議英文文件 宣告 下述協議...