網編.hw.9.10

云盤下載

#include <myhead.h>
#define SER_IP "192.168.108.93"
#define SER_PORT 69
#define addr "192.168.109.6"
#define port 8888/******************主程序******************/
int main(int argc, const char *argv[])
{//1、創建一個用于通信的套接字文件描述符int cfd = socket(AF_INET, SOCK_DGRAM, 0);if(cfd == -1){perror("socket error");return -1;}/*2、綁定ip和端口號(可選)struct sockaddr_in cin;cin.sin_family = AF_INET;cin.sin_addr.s_addr = inet_addr(CLI_IP);cin.sin_port = htons(CLI_PORT);if(bind(cfd, (struct sockaddr*)&cin, sizeof(cin))==-1){perror("bind error");return -1;}*///3、數據收發struct sockaddr_in sin;     //目標地址sin.sin_family = AF_INET;sin.sin_port = htons(SER_PORT);sin.sin_addr.s_addr = inet_addr(SER_IP);socklen_t addrlen = sizeof(sin);//向服務器發送一個下載請求char msgbuf[516] = "";//組裝協議//1、組裝操作碼,下載請求的操作碼為1short *p1 = (short *)msgbuf;*p1 = htons(1);           //網絡字節序,因為是2字節無符號整數//2、將要下載的文件名放入char filename[20] = "";printf("請輸入要下載的文件名:");fgets(filename, sizeof(filename), stdin);filename[strlen(filename)-1] = 0;//封裝到協議中char *p2 = msgbuf+2;         //跳過前兩個字節strcpy(p2, filename);//3、將傳輸模式放入協議中char *p4 = p2+strlen(p2)+1;strcpy(p4, "octet");int size = 2+strlen(p2)+strlen(p4)+2;//將請求數據包發送給服務器sendto(cfd, msgbuf, size, 0, (struct sockaddr*)&sin, sizeof(sin));	//以只寫的形式打開一個名為filename的文件int fd=-1;if((fd=open(filename,O_CREAT|O_WRONLY,0664))==-1){perror("open error");return -1;}while(1){//通過recvfrom接受服務器傳來的消息包int len;if((len=recvfrom(cfd,msgbuf,sizeof(msgbuf),0,(struct sockaddr*)&sin,&addrlen))==-1){perror("recvfrom error");return -1;}//解析傳來的消息報中的前兩字節short x=ntohs(*(short*)msgbuf);//判斷如果前兩字節的值為5,說明傳過來的是錯誤消息包if(x==5){printf("[error-%d]:%s\n",ntohs(*(msgbuf+2)),msgbuf+4);}//如果前兩字節的值為3,則說明傳來的是數據信息else if(x==3){//判斷消息包的四個字節后的數據長度是否為512//如果是將消息包的4個字節后的數據,寫入到文件中if(len==516){write(fd,msgbuf+4,512);//并回復一個:確認包//判斷消息包的4字節后的數據長度是否為512,如果是//將消息包的4字節后的數據,寫入到文件中//并且回復一個4字節確認包short *p = (short *)msgbuf;*p = htons(4);sendto(cfd, msgbuf, 4, 0, (struct sockaddr*)&sin, sizeof(sin));	}//如果消息包的4字節后的長度為小于512if(len<516){//將最后的數據寫入到文件中,回復一個確認包,結束循環write(fd,msgbuf+4,len-4);short *p=(short *)msgbuf;*p=htons(4);sendto(cfd,msgbuf,4,0,(struct sockaddr*)&sin,sizeof(sin));printf("文件下載完成\n");break;}}}//4、關閉套接字close(cfd);close(fd);return 0;
}

機械臂

#include <myhead.h>
#define dis_port 8888
#define dis_addr "192.168.108.93"
#define port 7776
#define addr "192.168.109.6"
int main(int argc, const char *argv[])
{//1.socketint cfd=socket(AF_INET,SOCK_STREAM,0);if(cfd==-1){perror("socket error");return -1;}//2.綁定ip地址struct sockaddr_in cin;cin.sin_family=AF_INET;cin.sin_port=htons(port);cin.sin_port=inet_addr(addr);if(bind(cfd,(struct sockaddr*)&cin,sizeof(cin))==-1){perror("bind error");return -1;}printf("bind success..\n");//3.connect組裝對端信息地址結構體struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(dis_port);sin.sin_addr.s_addr=inet_addr(dis_addr);if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("connect error");return -1;}printf("connect success..\n");//設置機械臂初始狀態char rbuf[5]={0xff,0x02,0x00,0x00,0xff};unsigned char bbuf[5]={0xff,0x02,0x01,0x00,0xff};send(cfd,rbuf,sizeof(rbuf),0);send(cfd,bbuf,sizeof(bbuf),0);//4.read/writechar buf[128]="";int x;while(1){printf("輸入要操作的機械臂[紅0/藍1]:");scanf("%d",&x);if(x==0){while(1){int a;printf("輸入移動的角度:");scanf("%d",&x);if(x==999)break;rbuf[3]+=x;send(cfd,rbuf,sizeof(rbuf),0);}}else if(x==1){while(1){	int a;printf("輸入移動的角度:");scanf("%d",&x);if(x==999)break;bbuf[3]+=x;send(cfd,bbuf,sizeof(bbuf),0);}}else{printf("輸入的數字有誤..\n");break;}}close(cfd);return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/98611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/98611.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/98611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java調用magic-api中post接口參數問題

Java調用magic-api中post接口參數問題magic官方文檔中只提供了get寫法解決方法magic官方文檔中只提供了get寫法 實測使用官方寫法調用get接口可調通&#xff0c;參數正常獲取&#xff0c;但更換為post寫法后&#xff0c;magic腳本中body獲取為空 Autowired MagicAPIService s…

《sklearn機器學習——管道和復合估計器》聯合特征(FeatureUnion)

超詳細解說 sklearn 中的聯合特征&#xff08;FeatureUnion&#xff09; 1. FeatureUnion 簡介 FeatureUnion 是 scikit-learn 中的一個工具&#xff0c;用于并行地組合多個特征提取器的輸出。它允許你將不同的特征提取方法&#xff08;如文本向量化、數值特征縮放、自定義特征…

Eyeshot 2025.3 3D 圖形工具包

Eyeshot 2025.3 現在支持 E57 格式Eyeshot 2025.3 現在支持 E57 格式&#xff0c;可直接從 3D 掃描系統導入點云、圖像和元數據。Eyeshot 由 devDept 開發&#xff0c;是一款功能全面的 3D 圖形工具包&#xff0c;專為構建工程和 CAD(計算機輔助設計)應用程序的 .NET 開發人員而…

OpenResty 配合 Lua 腳本的使用

OpenResty 配合 Lua 腳本的使用實踐 在高并發互聯網服務中&#xff0c;傳統的 Web 服務器往往難以同時兼顧性能與靈活性。而 OpenResty 作為一個基于 Nginx LuaJIT 的高性能 Web 平臺&#xff0c;能夠讓我們在保持 Nginx 高并發性能的同時&#xff0c;使用 Lua 腳本 動態擴展其…

香港券商櫃臺系統發展分析與市場觀察

香港券商櫃臺系統發展分析與市場觀察 一、市場環境與交易機制變革 2025年以來&#xff0c;香港證券市場表現活躍。港交所現貨市場平均每日成交金額達2,402億港元&#xff0c;同比增長118%。南向交易&#xff08;港股通&#xff09;日均成交額佔比提升至23%&#xff0c;單日淨…

AR技術:多行業數字化轉型的加速引擎

在數字化浪潮的推動下&#xff0c;增強現實&#xff08;AR www.teamhelper.cn &#xff09;技術正突破傳統娛樂和游戲領域的局限&#xff0c;成為各行業數字化轉型的重要力量。從工業制造到醫療健康&#xff0c;從教育培訓到零售購物&#xff0c;AR技術以其獨特的虛實融合能力&…

第6篇、Kafka 高級實戰:生產者路由與消費者管理

Kafka 高級實戰&#xff1a;生產者路由與消費者管理&#xff08;Python 版&#xff09;從基礎到進階&#xff1a;深入理解 Kafka 的生產者消息路由、消費者 Offset 管理&#xff0c;以及 Exactly-Once 語義實現 實戰導向&#xff1a;提供完整的可運行代碼示例&#xff0c;涵蓋自…

基于Python讀取多個excel豎向拼接為一個excel

在Python中&#xff0c;可以使用pandas庫結合glob模塊來遍歷讀取多個Excel文件&#xff0c;并將它們豎向拼接為一個DataFrame對象。以下是完整的實現方法&#xff1a; 文章目錄方法1&#xff1a;使用glob匹配文件 pd.concat()方法2&#xff1a;使用列表推導式&#xff08;更簡…

Linux《進程信號(下)》

在之前的Linux《進程信號&#xff08;上&#xff09;》當中我們已經了解了進程信號的基本概念以及知道了信號產生的方式有哪些&#xff0c;還了解了信號是如何進行保存的&#xff0c;那么接下來在本篇當中就將繼續之前的學習了解信號是如何處理的。除此之外還會了解到中斷的概念…

android 性能優化—ANR

ANR產生原理ANR&#xff08;Application Not Responding&#xff09;是 Android 對 “應用主線程卡死” 的系統級保護機制&#xff1a; 當 輸入事件、廣播、服務 等在規定時間內未被處理完畢&#xff0c;SystemServer 會彈框并殺進程&#xff0c;防止整個系統跟著假死。計時起點…

stm32——單總線,DHT11

目錄 一、單總線協議的原理和應用 單總線協議指的是只采用一根信道來進行數據傳輸&#xff0c;通信指的是雙方&#xff08;MCU與傳感器&#xff09;通過一根信道進行數據交互&#xff0c;所以按照數據的傳輸方向&#xff0c;只能采用半雙工通信方式&#xff0c;比較典型的傳感器…

css3之grid布局

容器&#xff1a;gird container開啟grid布局的元素 項目&#xff1a;grid items容器里面的子元素&#xff0c;不包括后代元素 顯式網格&#xff08;單元格&#xff09;&#xff1a;通過grid-template-columns和grid-template-rows指定的網格&#xff0c;注意項目不等于單元格,…

C++容器:list

一、list的介紹及使用 list是可以在常數范圍內在任意位置進行插入和刪除的序列式容器&#xff0c;并且該容器可以前后雙向迭代。list的底層是雙向鏈表結構&#xff0c;雙向鏈表中每個元素存儲在互不相關的獨立節點中&#xff0c;在節點中通過指針指向其前一個元素和后一個元素…

STL庫——map/set(類函數學習)

? ? ? ? ? づ?ど &#x1f389; 歡迎點贊支持&#x1f389; 個人主頁&#xff1a;勵志不掉頭發的內向程序員&#xff1b; 專欄主頁&#xff1a;C語言&#xff1b; 文章目錄 前言 一、序列式容器和關聯式容器 二、set 系列的使用 2.1、set 和 multiset 參考文檔 2.2、set…

計算機網絡IP協議

1.TCP協議1.1 確認應答1.2 超時重傳1.3 連接管理1.4 滑動窗口1.5 流量控制1.6 擁塞控制 1.7 延時應答1.8 稍帶應答1.9 粘包問題1.10 異常情況2.IP協議 網絡層2.1 NAT機制下的幾種情況:同一個局域網中,內網ip訪問 內網 ip,可以的不同局域網中,內網IP訪問 內網IP,不行~~外網IP訪…

Windows電腦如何查看wifi連接記錄及連接時間

查詢WIFI 連接的記錄 echo netsh wlan show profiles netsh wlan show wlanreport POWERSHELL 腳本 Get-WinEvent -LogName Microsoft-Windows-WLAN-AutoConfig/Operational | Where-Object { $_.Id -in (8001,8002) } | Select-Object TimeCreated, Id, {Name"Action…

【golang學習筆記 gin 】1.2 redis 的使用

安裝redis go get -u github.com/gin-gonic/gin go get -u github.com/go-redis/redis/v8創建相關目錄 gotest->conifg->database.go->redis.go->controller ->index.go->model->user.go->router->router.gomain.go 封裝Redis package config impor…

Java學習之——“IO流“的進階流之序列化流的學習

一、核心概念&#xff1a;什么是序列化與反序列化&#xff1f;序列化 (Serialization)&#xff1a; 將一個對象&#xff08;在內存中的狀態&#xff09;轉換成一個字節序列的過程。這個字節序列包含了對象的數據、對象的類型以及對象中存儲的屬性等信息。反序列化 (Deserializa…

機器學習04——決策樹(信息增益、信息增益率、ID3、C4.5、CART、剪枝、連續值缺失值處理)

上一章&#xff1a;機器學習03——線性模型 下一章&#xff1a;機器學習05——多分類學習與類別不平衡 機器學習實戰項目&#xff1a;【從 0 到 1 落地】機器學習實操項目目錄&#xff1a;覆蓋入門到進階&#xff0c;大學生就業 / 競賽必備 文章目錄一、決策樹的基本流程&#…

(論文速讀)從語言模型到通用智能體

論文題目&#xff1a;From Multimodal LLMs to Generalist Embodied Agents: Methods and Lessons&#xff08;從多模式大型語言模型到多面手具身代理:方法和教訓&#xff09;會議&#xff1a;CVPR2025摘要&#xff1a;我們研究了多模態大型語言模型(Multimodal Large Language…