91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

飛鴿傳書原理以及相關代碼詳解

admin
2016年12月23日 18:31 本文熱度 6770

飛鴿傳書的實現原理: 

(1)最關鍵的是局域網用戶列表的建立;飛鴿啟動時使用UDP協議向 255.255.255.255這個廣播地址發送廣播包,默認端口是2425。廣播包內容包含用戶名、工作組、主機名、IP等信息;  已啟動飛鴿的用戶通過2425端口收到此廣播包后,就會在自己的用戶列表中添加這個用戶的用戶名、工作組等信息,同時向對方IP發送本機用戶的個人信息;從而雙方都能建立起用戶列表;

(2)刷新用戶列表時發送的廣播包和啟動時差不多,只不過返回的標識信息略有不同;可以做一個小工具,監控2425端口內存流,就能截獲刷新和聊天時的消息。 

(3)傳送聊天信息時同樣使用UDP協議;由于UDP協議是無連接協議,傳輸速度快,但是沒有確認機制,是不可靠的協議,需要自己定義返回信息的標志來判斷對方是否收到信息;  (4)用戶離線時發送一個離線廣播包到255.255.255.255,收到此廣播包的用戶,根據包中的IP地址(也可能是多種判斷標志或者包含硬件標識,比如網卡地址等)刪除對方的用戶列表信息; 

(5)廣域網無法直接使用廣播方式,靠手工添加"局域網外廣播列表"來建立相互的關系;  (6)飛鴿傳送文件是使用TCP協議,端口2425;

 

(1)      步驟一主要代碼解析如下:

voidlogin(int sockfd,char *user, char *host)

{

   char buf[200]="";

   struct sockaddr_in addr={AF_INET};

   addr.sin_addr.s_addr=inet_addr("192.168.1.255");//自己的主機ip地址

   addr.sin_port = htons(2425);

   sprintf(buf,"1:%d:%s:%s:%d:%s",time(NULL),user,host,IPMSG_BR_ENTRY,user);

   sendto(sockfd, buf, strlen(buf),0,(structsockaddr*)&addr, sizeof(addr));

}

啟動飛鴿傳書的時候要廣播發送udp消息。

 

(2)      步驟二

   if((tcp_fd = socket(AF_INET, SOCK_STREAM,0))<0)

   {

            perror("create udp");

            exit(1);

   }

   if(bind(tcp_fd, (struct sockaddr*)&addr,sizeof(addr))!=0)

   {

            perror("bind tcp");

            exit(1);

   }

   listen(tcp_fd, 10);

啟動tcp監聽其他用戶發來的消息

#defineIPMSG_BR_ENTRY                           0x00000001UL

#defineIPMSG_BR_EXIT                      0x00000002UL

#defineIPMSG_ANSENTRY                           0x00000003UL

#define IPMSG_BR_ABSENCE             0x00000004UL

 

udp消息類型標志位,根據收到消息的類型做出不同的操作。

1:IPMSG_BR_ENTRY 新用戶登錄標志,回饋本機信息

                               add_usr(temp[2],temp[3],inet_ntoa(addr.sin_addr));

                               sprintf(buf,"1:%d:%s:%s:%d:%s",time(NULL),user(),host(),IPMSG_ANSENTRY,user());

                               sendto(udp_fd,buf, strlen(buf),0,(struct sockaddr*)&addr,sizeof(addr));

2:IPMSG_BR_EXIT 用戶下線通知,在本機中刪除用戶

del_usr(inet_ntoa(addr.sin_addr));

3:IPMSG_ANSENTRY 用戶回應登錄信息,添加用戶就好

add_usr(temp[2],temp[3],inet_ntoa(addr.sin_addr));     

4:IPMSG_BR_ABSENCE 收到用戶發來消息,讀取消息內容收取文件或者發文件。


該文章在 2016/12/23 18:31:37 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 欧美亚洲 | 日本亲近相奷中 | 国产亚洲制服 | 欧美在线精品αⅴ | 国产亚洲精品福利 | 国内精品小视频在线 | 乱伦性爱网 | 福利影院 | 91国产精品福利 | 91视频一区二区 | 国产福利 | 国产一区二区动漫 | sm捆绑秘免费网站 | 国产精品免费网站 | 日本播放器大片免费 | 欧美最猛亚洲精品 | 国产区成人精品视频 | 91丝袜红桃 | 精品午夜一二 | 国产无人区一码二码 | 乱伦免费影视亚洲 | 国产精品一二二区 | 黑丝在线 | 日韩欧美视 | 三级亚洲精品 | 午夜拍拍拍 | 91熟女视频| 日韩精品人成在线播 | 国产玉足 | 国产精品一线 | 欧美日韩午夜福利 | 日本加勒比国产在 | 精品国产精品 | 欧洲+日本+中国 | 三级一区二区 | 最新国产成人拍偷乱偷精品 | 国自产拍视频 | 国产日韩在线视 | 国产主播福利大全 | 日本二码| 国内视频在 |