手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

嵌入式客户端向服务器端上传文件

时间:2024-10-18 19:32:33

1、客户端的代码:(先运行服务器端 ,并且新建一个1.txt文件:Hello world!)#include<stdio.h&爿讥旌护gt;#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>int main(){ struct sockaddr_in servAddr; memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family = PF_INET; servAddr.sin_port = htons(8888); servAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //socket int cliFd = socket(PF_INET, SOCK_STREAM, 0); if(-1 == cliFd) { perror("socket error!"); return -1; } //connect int ret = connect(cliFd, (struct sockaddr *)&servAddr, sizeof(servAddr)); if(-1 == ret) { perror("connect error!"); close(cliFd); return -1; } printf("connect ok!\n"); char file[100]; printf("请输入要传送的文件名: \n"); gets(file); int fd=open(file,O_RDONLY);//打开文件,读文件 if(-1==fd) { perror("open file error!\n"); return -1; } char buf[100]; memset(buf,0,sizeof(buf));//清空申请的内存空间 while(1) { int re=read(fd,buf,sizeof(buf)); if(0==re) { break; } send(cliFd,buf,re,0); } return 0; }

嵌入式客户端向服务器端上传文件

2、服务器端代码:#include<stdio.h>拭貉强跳#include<sys/types.h>#include<sys/socket.h>稆糨孝汶;#include<arpa/inet.h>#include<string.h>#include<sys/stat.h>#include<fcntl.h>#include<unistd.h>int main(){ struct sockaddr_in servAdder; memset(&servAdder,0,sizeof(servAdder)); servAdder.sin_family=PF_INET; servAdder.sin_port=htons(8888); servAdder.sin_addr.s_addr=inet_addr("127.0.0.1"); //socket int servFd=socket(PF_INET,SOCK_STREAM,0); if(-1==servFd) { perror("socket error\n"); return -1; } printf("socket ok\n"); //bind int ret=bind(servFd,(struct sockadder *)&servAdder,sizeof(servAdder)); if(-1==ret) { perror("bind error"); return -1; } printf("bind ok\n"); //listen ret= listen(servFd,10); if(-1==ret) { perror("listen error"); return -1; } printf("listen ok!\n"); //accept int connFd=accept(servFd,NULL,NULL);//对方的地址信息和长度,连接套接字 if(-1==connFd) { perror("accept error\n"); return -1; } printf("accept ok!\n"); int fd=open("server.txt",O_WRONLY|O_CREAT,0666); if(fd<0) { perror("open file error\n"); return -1; } char buf[1024]={0}; memset(buf,0,sizeof(buf));//清空申请的内存空间 while(1) { int rec=recv(connFd,buf,sizeof(buf),0); if(0==rec) { break; } write(fd,buf,rec); } printf("file copy success\n"); //printf("Allowed contents of flies:\n"); //puts(buf); close(fd); close(servFd); close(connFd);return 0;}

嵌入式客户端向服务器端上传文件

3、主要设计步骤:(1)创建套接字(不同主机之间的进程进行双向通信的端点)(2)绑定地址信息(bind)(3)发起连接请求(connect)(4)收发消息(send/recv)(5)关闭通信(close)

嵌入式客户端向服务器端上传文件

4、上传文件思路:服务器端:1、打开文件while(1){2、接受客户端的消息recvIf(recv的返回值为0){break;}3、将接受到的消息,写入文件} 客户端:1、打开文件openwhile(1){2、读文件readIf(read返回值为0){break;}3、将读到的内容发送给服务器}

嵌入式客户端向服务器端上传文件

5、根据思路写出上传文件的实现代码:服务器端:int fd=open("server.txt",O_WRONLY|O_CREAT,0666);if(fd<0){perror("open file error\n");return -1;}char buf[1024]={0};memset(buf,0,sizeof(buf));//清空申请的内存空间while(1){int rec=recv(connFd,buf,sizeof(buf),0);if(0==rec){break;} write(fd,buf,rec);}printf("file copy success\n");//printf("Allowed contents of flies:\n");//puts(buf);客户端:int fd=open(file,O_RDONLY);//打开文件,读文件if(-1==fd){perror("open file error!\n");return -1;}char buf[100];memset(buf,0,sizeof(buf));//清空申请的内存空间while(1){int re=read(fd,buf,sizeof(buf));if(0==re){break;}send(cliFd,buf,re,0);}

嵌入式客户端向服务器端上传文件
© 手抄报圈