題目描述:
智慧型家居協議設計
實現乙個基於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 是應用在路由器介面的指令列表 指令列表用來指明經過路由器的資料報是接收還是拒絕,起到了資料報的過濾功能 標準訪問控制列表 限制檢查資料報的源位址 允許或... 分層原則 實體每一層上的活動元素,包括實現該層功能的所有硬體與軟體。對等實體 相互通訊的兩個不同節點上位於同一層次 完成相同功能的實體。介面 同一節點內相鄰層之間交換資訊的連線點,下層通過介面向相鄰上層提供服務。通過定義服務及原語操作實現,但服務的實現細節對上層是透明的 不可見的 只要介面條件不變,...計算機網路工程課程設計
計算機網路課程設計 筆記(二)訪問控制列表設定
計算機網路課程筆記(三)