計算機網路課程設計 2019 智慧型家居協議設計

2021-10-02 08:51:42 字數 4122 閱讀 4991

題目描述:

智慧型家居協議設計

實現乙個基於socket的物聯網伺服器,接收來自客戶端的資料。實現乙個物聯網客戶端,模擬裝置。客戶端產生資料,傳送至伺服器,伺服器根據協議對資料作出處理。

需要模式的裝置有:

溫度感測器:採集房間溫度資訊。

濕度感測器:採集房間濕度資訊。

空調:可以根據伺服器發來的指令進行調節模式(製冷、制熱、送風)、設定溫度、風速;還可以根據伺服器的指令上傳子自己的當前狀態:模式、溫度、風速。

門窗磁:可以根據伺服器發來的指令開啟或者關閉窗戶。

要求:設計通訊協議完成資料的雙向傳輸,應用層協議應包含首部和資料部分。

學校:煙台大學計算機與控制工程學院2017級

老師:趙老師

csdn資源:

壓縮包裡面還有個一複雜版本的,那是我原來從github上找的demo,比較完整,而且實現一些死鎖問題的解決方案。

本次實驗時間還是比較長的。但是實驗還是比較匆忙的完成,因為大家都是提前驗收的,沒有考慮一些像是死鎖一樣的問題。

server.cpp

#include

#include

#include

#include

#include

using namespace std;

#pragma comment(lib, "ws2_32.lib")

char recv_buf[100];

char send_buf[100];

void print(char *s)

;   //固定頭 幀頭

char function_num = ;  //s-->c

char device_type[3];          //裝置型別,0-空調,1-門窗磁

//判斷空調

if(recv_message[3] == '0' || recv_message[3] == '1')

device_type[0] = '0'; // 0代表空調

device_type[1] = '\0';

char device_start = ;  //不用  不使用

char device_num = ;    //不用

strcat(send_buf,solid_head);

strcat(send_buf,function_num);

strcat(send_buf,device_type);

strcat(send_buf,device_start);

strcat(send_buf,device_num);

int p;

if(recv_message[3] == '0')

temperature /= (recv_message[5] - '0');  //空調模式

if(temperature<18); //制熱

char tem_standard = ;

char wind_speed = ;

strcat(send_buf,moshi);

strcat(send_buf,tem_standard);

strcat(send_buf,wind_speed);

}else if(temperature>18); //製冷

char tem_standard = ;

char wind_speed = ;

strcat(send_buf,moshi);

strcat(send_buf,tem_standard);

strcat(send_buf,wind_speed);

}else; //送風

char tem_standard = ;

char wind_speed = ;

strcat(send_buf,moshi);

strcat(send_buf,tem_standard);

strcat(send_buf,wind_speed);}}

if(recv_message[3] == '1')

humperature /= (recv_message[5] - '0');

if(humperature<30); //提高濕度

char tem_standard = ;

char wind_speed = ;

strcat(send_buf,moshi);

strcat(send_buf,tem_standard);

strcat(send_buf,wind_speed);

}else if(humperature>30); //降低濕度

char tem_standard = ;

char wind_speed = ;

strcat(send_buf,moshi);

strcat(send_buf,tem_standard);

strcat(send_buf,wind_speed);

}else; //送風

char tem_standard = ;

char wind_speed = ;

strcat(send_buf,moshi);

strcat(send_buf,tem_standard);

strcat(send_buf,wind_speed);}}

//判斷門窗鎖

//cout< 18)

else

send_buf[7] = 'f';

send_buf[8] = 'f';

send_buf[9] = 'f';

}send(s_accept,send_buf,100,0);

cout<}

closesocket(s_server);

closesocket(s_accept);

//釋放dll資源

wsacleanup();

return 0;}/*

5a00121723, 10

輸入服務端訊息

456傳送成功

5a00311723, 10

輸入服務端訊息

*/client.cpp

#include

#include

#include

#include

#include

#include

#define random(a,b) (rand()%(b-a)+a)

#pragma comment(lib, "ws2_32")

using namespace std;

char send_buf[200];     //傳送資料報

char accept_buf[200];   //接受資料報

string strtem(int i);   //生成隨機溫度資料段

string strhum(int i);   //生成隨機濕度資料段

void tcpxy();           //生成上傳伺服器報文

void analysis(char receive);  //對伺服器傳回的報文進行解析

int main()

void analysis(char receive)  //解析

}void tcpxy()

else if(startnum==2)

else if(startnum==3)

else

string str3 = to_string(devicebnum);

string str4 = to_string(tempnum);

string str5 = to_string(humnum);

string str6 = to_string(startnum);

string str7 = to_string(direction);

string str=stableheader+str7+str3+str6+str4; //幀格式:幀頭+傳送方向+裝置型別+開始編號+數量+資料段

if(devicebnum==0)

str+=strtem(tempnum);

else if(devicebnum==1)

str+=strhum(tempnum);

cout

計算機網路工程課程設計

安陽某高階中學校園網設計 1 調查某高中校園網使用者需求 從校園規模,功能劃分,安全需求入手。2 分析設計該校,制訂拓撲結構,提出校園設計規劃方案。3 依據規劃,進行裝置選型。4 在模擬平台上進行校園網組建和測試工作 系統 windows 10 軟體 華為ensp模擬器 技術運用 ospf,stp,...

計算機網路課程設計 筆記(二)訪問控制列表設定

訪問控制列表ios指令 訪問控制列表的查 刪 實驗使用 packet tracer 訪問控制列表 access control lists,acl 是應用在路由器介面的指令列表 指令列表用來指明經過路由器的資料報是接收還是拒絕,起到了資料報的過濾功能 標準訪問控制列表 限制檢查資料報的源位址 允許或...

計算機網路課程筆記(三)

分層原則 實體每一層上的活動元素,包括實現該層功能的所有硬體與軟體。對等實體 相互通訊的兩個不同節點上位於同一層次 完成相同功能的實體。介面 同一節點內相鄰層之間交換資訊的連線點,下層通過介面向相鄰上層提供服務。通過定義服務及原語操作實現,但服務的實現細節對上層是透明的 不可見的 只要介面條件不變,...