




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、四 川 大 學(xué) 計(jì) 算 機(jī) 學(xué) 院、軟 件 學(xué) 院實(shí) 驗(yàn) 報(bào) 告 學(xué)號(hào): 姓名:專(zhuān)業(yè): 班級(jí): 第 3 周 課程名稱 信息安全產(chǎn)品開(kāi)發(fā)實(shí)踐 實(shí)驗(yàn)課時(shí)4實(shí)驗(yàn)項(xiàng)目遠(yuǎn)程控制系統(tǒng)實(shí)驗(yàn)時(shí)間2013.9.27實(shí)驗(yàn)?zāi)康?利用流套接字實(shí)現(xiàn)一個(gè)簡(jiǎn)單的遠(yuǎn)程控制系統(tǒng) 實(shí)驗(yàn)環(huán)境 虛擬機(jī) Ubuntu-VMware Workstation 實(shí)驗(yàn)內(nèi)容(算法、程序、步驟和方法) 服務(wù)器服務(wù)器代碼中有兩個(gè)死循環(huán),外部是為了重復(fù)連接客戶端(即使對(duì)方斷了此次連接仍然能繼續(xù)等待并連接下一客戶端),要注意每連接一次客戶端套接字都會(huì)不同,而且除了連接客戶端的套接字以外還有監(jiān)聽(tīng)套接字。#include
2、<stdlib.h>#include<stdio.h>#include<sys/socket.h>#include<netdb.h>#include<string.h>#include<unistd.h>#include<netinet/in.h>#include<arpa/inet.h>#define PORT 8900#defineSIZE 2048/* 2K BUFFER */void exec (char* command,char* result)FILE * in;int len;cha
3、r c;len=0;bzero(result,sizeof(result);in=popen(command,"r");if (NULL=in)fprintf(stderr,"error in create a pipen");/return -1;while(c=fgetc(in)!=EOF)&&(len<SIZE)resultlen=c;len+;resultlen='0'pclose(in);if (0=len)sprintf(result,"%s cannot executen",comm
4、and);int main(int argc,char* argv)struct sockaddr_in server;struct sockaddr_in client;int len;int port;int listend;int connectd;int sendnum;int opt;int recvnum;char send_buf2048;char recv_buf2048;int rvalue;char cmd10; /* these two var used to deal with cd command */char path2048;port= PORT;memset(s
5、end_buf,0,2048);memset(recv_buf,0,2048);opt = SO_REUSEADDR;if (-1=(listend=socket(AF_INET,SOCK_STREAM,0)/使用TCP創(chuàng)建監(jiān)聽(tīng)用的套接字perror("create listen socket errorn");exit(1);setsockopt(listend,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt);#ifdef DEBUGprintf("the listen id is %dn",listend);
6、#endifmemset(&server,0,sizeof(struct sockaddr_in);server.sin_family = AF_INET;/IPv4協(xié)議server.sin_addr.s_addr = htonl(INADDR_ANY);/接收任意地址server.sin_port = htons(port);/設(shè)置端口號(hào)if (-1=bind(listend,(struct sockaddr *)&server,sizeof(struct sockaddr)/綁定perror("bind errorn");exit(1); if (-1=
7、listen(listend,5) perror("listen errorn");exit(1); while(1)/外部死循環(huán),用來(lái)重復(fù)連接客戶端if (-1=(connectd=accept(listend,(struct sockaddr*)&client,&len)/創(chuàng)建新的套接字連接客戶端perror("create connect socket errorn");continue;while (1)memset(recv_buf,0,2048);#ifdef DEBUGprintf("the connect id
8、is %d",connect);printf("the client ip addr is %s",inet_ntoa(client.sin_addr);#endif#ifdef DEBUGprintf("the send num is %d",sendnum);printf("the client ip addr is %s",inet_ntoa(client.sin_addr);#endifif (0>(recvnum = recv(connectd,recv_buf,sizeof(recv_buf),0)perr
9、or("recv errorn");close(connectd);continue;recv_bufrecvnum-1='0'/這里要注意-1,不然會(huì)保留換行符if (0=strcmp(recv_buf,"quit")|(0=strcmp(recv_buf,"QUIT")/結(jié)束對(duì)話,跳出內(nèi)部循環(huán),繼續(xù)外部循環(huán)printf("overn");break;sscanf(recv_buf,"%s %s",cmd,path);if (0=strcmp("cd",cm
10、d) |(0=strcmp("CD",cmd)chdir(path);continue;exec(recv_buf,send_buf);rvalue=-1;rvalue=send(connectd,send_buf,sizeof(send_buf),0); close(listend); return 0; (接上)實(shí)驗(yàn)內(nèi)容(算法、程序、步驟和方法)客戶端客戶端代碼中只有一個(gè)死循環(huán),和上次實(shí)驗(yàn)差別不大。#include<stdlib.h>#include<stdio.h>#include<sys/socket.h>#inclu
11、de<netdb.h>#include<string.h>#include<unistd.h>#include<netinet/in.h>#include<arpa/inet.h>#define SIZE 2048void print_usage (char* cmd )fprintf(stderr,"Usage:%s ip addressn",cmd);int main(int argc,char* argv)struct sockaddr_in server;int ret;int len;int port;i
12、nt sockfd;int sendnum;int recvnum;char send_buf2048;char recv_buf2048;int rvalue;char bufferSIZE;char cmd10; if (2>argc)| (argc >3)print_usage(argv0);exit(1);if (3=argc) /這里的端口號(hào)從主函數(shù)參數(shù)獲取port = atoi(argv2);if (-1=(sockfd=socket(AF_INET,SOCK_STREAM,0)perror("can not create socketn");exi
13、t(1);memset(&server,0,sizeof(struct sockaddr_in);server.sin_family = AF_INET;server.sin_addr.s_addr = inet_addr(argv1);server.sin_port = htons(port);if (0>(ret=connect(sockfd,(struct sockaddr*)&server,sizeof(struct sockaddr)perror("connect error");close(sockfd);exit(1);while(1)/
14、這邊只需一個(gè)死循環(huán)memset(buffer,0,2048);fprintf(stderr,"TCP>");fgets(buffer,SIZE,stdin);rvalue=send(sockfd,buffer,strlen(buffer),0);if (0=strcmp(buffer,"quitn")|(0=strcmp(buffer,"QUITn")/結(jié)束對(duì)話close(sockfd);break;if (0>rvalue)fprintf(stderr,"error in receiving datan");continue;sscanf(buffer,"%s",cmd);if (0=strcmp("cd",cmd)|(0=strcmp("CD",cmd)continue;/如果是cd命令則沒(méi)有返回內(nèi)容直接重新開(kāi)始循環(huán)len=sizeof(struct sockaddr);if (0>(len=recv(sockfd,buffer,2048,0)perror("recv data errorn");close(sockfd);exit(1);bufferlen='0'printf(&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級(jí)上冊(cè)數(shù)學(xué)教案 - 5.3 分餅 北師大版
- 2025年租憑合同延期申請(qǐng)書(shū)模板
- 五年級(jí)下冊(cè)數(shù)學(xué)教案-練習(xí)一 北師大版
- 三年級(jí)上冊(cè)語(yǔ)文部編版期中測(cè)試卷(含答案)
- 2024年水電站計(jì)算機(jī)監(jiān)控裝置項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2025年濟(jì)南工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)含答案
- 《7 秋季星空》 教學(xué)設(shè)計(jì)-2023-2024學(xué)年科學(xué)六年級(jí)上冊(cè)青島版
- 我為爸爸慶祝父親節(jié)教案教學(xué)設(shè)計(jì)
- 2025年廣東省建筑安全員-A證考試題庫(kù)附答案
- 2025年桂林信息工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)帶答案
- 城市開(kāi)放空間-課件
- 湖南2024年湖南省水利廳所屬事業(yè)單位招聘57人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年全球及中國(guó)調(diào)頻儲(chǔ)能行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2024年加氫站技術(shù)規(guī)范
- 小學(xué)思政培訓(xùn)
- 《森林火災(zāi)預(yù)防與撲救技術(shù)課件教程》
- 2025年度會(huì)計(jì)人員繼續(xù)教育會(huì)計(jì)法律法規(guī)答題活動(dòng)測(cè)試100題答案
- 第15課 人機(jī)對(duì)話的實(shí)現(xiàn) 說(shuō)課稿 六上信息科技浙教版(2023)001
- 統(tǒng)編版(2025新版)七年級(jí)下冊(cè)語(yǔ)文第一單元綜合測(cè)試卷(含答案)
- 棗莊學(xué)院《電力拖動(dòng)與自動(dòng)控制系統(tǒng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 醫(yī)師手術(shù)權(quán)限申請(qǐng)流程
評(píng)論
0/150
提交評(píng)論