当前位置: 首页 > news >正文

网站建设最新技术山东大禹建设集团网站

网站建设最新技术,山东大禹建设集团网站,wordpress搜索插件慢,医院网站建设实施方案目录 1云盘项目简介 2 项目实现 2.1 首先实现TCP客户端、服务端 2.2 实现客户端函数简化 2.3 实现服务端函数简化 2.4 TCP数据连包现象 2.5 封装send函数和recv函数 2.6 建立readme说明 2.7 实现文件传输 2.8 读取配置文件种的ip、端口号,通过argv[1]参数实现文件传输…目录 1云盘项目简介 2 项目实现 2.1 首先实现TCP客户端、服务端 2.2 实现客户端函数简化 2.3 实现服务端函数简化 2.4 TCP数据连包现象 2.5 封装send函数和recv函数 2.6 建立readme说明 2.7 实现文件传输 2.8 读取配置文件种的ip、端口号,通过argv[1]参数实现文件传输 3 最终项目 1云盘项目简介 常见的云盘服务软件 什么是云同步? 保持云端数据和终端数据的一致上传和下载实时同步定时同步手动同步需求分析 文件的上传和下载文件的大小不确定(文件太大,upd传输就不合适)文件的个数不确定实时同步需要获取文件事件(因为用循环太占cpu)定时同步需要设置定时器使用TCP实现手动同步如何实现手动同步? 实现TCP通信使用TCP实现文件的上传和下载实现整个目录下的文件的同步实现项目框架完成项目2 项目实现 2.1 首先实现TCP客户端、服务端 cloud-project_v1 为了方便管理头文件,新建tcp.h #ifndef _TCP_H #define _TPC_H#include stdio.h #include sys/socket.h #include netinet/in.h #include netinet/tcp.h #include stdlib.h #include unistd.h #include string.h #include arpa/inet.h #include errno.h#define ErrExit(msg) do{ perror(msg); \ //异常处理宏定义exit(EXIT_FAILURE);\}while(0); typedef struct sockaddr Addr; typedef struct sockaddr_in Addr_in; #define BACKLOG 5#endif 实现server.c #include "tcp.h"int main(int argc, char *argv[]) {int ret, fd, newfd;Addr_in addr,client_addr;socklen_t addrlen = sizeof(client_addr);char buf[BUFSIZ] = {};//检查参数if(argc 3){fprintf(stderr, "%s addr port\n", argv[0]);exit(EXIT_FAILURE);}//创建套接字if((fd = socket(AF_INET, SOCK_STREAM, 0)) 0)ErrExit("socket");//设置通信结构体bzero(addr, sizeof(addr));addr.sin_family = AF_INET;addr.sin_port = htons(atoi(argv[2]));if(inet_aton(argv[1], addr.sin_addr) == 0){fprintf(stderr, "Invalid address\n");exit(EXIT_FAILURE);}//绑定通信结构体if(bind(fd,(Addr *)addr, sizeof(addr)))ErrExit("bind");//监听模式if(listen(fd, BACKLOG))ErrExit("listen");//接收客户端链接bzero(client_addr,sizeof(client_addr));do{newfd = accept(fd, (Addr *)client_addr, addrlen);}while(newfd 0 errno == EINTR);if(newfd 0)ErrExit("accept");//接收客户端数据while(1){do {ret = recv(newfd, buf, BUFSIZ, 0);}while(ret 0 errno == EINTR); //如果信号导致的错误,继续执行if(ret 0){ErrExit("recv");}else if(!ret) //ret = 0 客户端退出{break;}else //ret 0{printf("[%s:%d]buf:%s\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port), buf);}}close(newfd);close(fd);return 0; } 实现服务端client.c(复制服务端进行改动) #include "tcp.h"int main(int argc, char *argv[]) {int ret, fd;Addr_in addr;char buf[BUFSIZ] = {"===test"};//检查参数if(argc 3){fprintf(stderr, "%s addr port\n", argv[0]);exit(EXIT_FAILURE);}//创建套接字if((fd = socket(AF_INET, SOCK_STREAM, 0)) 0)ErrExit("socket");//设置通信结构体bzero(addr, sizeof(addr));addr.sin_family = AF_INET;addr.sin_port = htons(atoi(argv[2]));if(inet_aton(argv[1], addr.sin_addr) == 0){fprintf(stderr, "Invalid address\n");exit(EXIT_FAILURE);}//发起连接请求if(connect(fd,(Addr *)addr, sizeof(addr)))ErrExit("bind");//发送数据while(1){do {ret = send(fd, buf, BUFSIZ, 0);}while(ret 0 errno == EINTR); //如果信号导致的错误,继续执行if(ret 0){ErrExit("recv");}else if(!ret) //ret = 0{break;}printf("send data:%s\n", buf);fflush(stdout);getchar();}close(fd);return 0; } 最终实现效果,客户端发送,服务端打印===test 2.2 实现客户端函数简化 cloud_project_v1.1客户端给服务端传文件 主要工作: 封装客户端socket创建过程的函数,简化代码创建makefiletcp.h #ifndef _TCP_H_ #define _TCP_H_#include stdio.h #include sys/socket.h #include netinet/in.h #include netinet/tcp.h #include stdlib.h #include unistd.h #include strings.h #include arpa/inet.h #include errno.h#define BACKLOG 5#define ErrExit(msg) do { perror(msg); \exit(EXIT_FAILURE); } while(0)typedef struct sockaddr Addr; typedef struct sockaddr_in Addr_in;void Argment(int argc, char *argv[]); int SocketInit(char *argv[]); #endiftcp.c #include "tcp.h"void Argment(int argc, char *argv[]){if(argc 3){fprintf(stderr, "%s addrport\n", argv[0]);exit(EXIT_FAILURE);} }int SocketInit(char *argv[]){int fd;Addr_in addr;/*创建套接字*/if( (fd = socket(AF_INET, SOCK_STREAM, 0) ) 0)ErrExit("socket");/*设置通信结构体*/bzero(addr, sizeof(addr) );addr.sin_family = AF_INET;addr.sin_port = htons( atoi(argv[2]) );if (inet_aton(argv[1], addr.sin_addr) == 0) {fprintf(stderr, "Invalid address\n");exit(EXIT_FAILURE);}/*发起连接请求*/if( connect(fd, (Addr *)addr, sizeof(addr) ) )ErrExit("connect");return fd; }client.c #include "tcp.h"int main(int argc, char *argv[]) {int fd;int ret;char buf[BUFSIZ] = {"===test==="};/*检查参数*/Argment(argc, argv);fd = SocketInit(argv);/*发送数据*/while(1){do {ret = send(fd, buf, BUFSIZ, 0);}while(ret 0 errno == EINTR); //如果信号导致的错误,继续执行if(ret 0)ErrExit("recv");else if(!ret)break;printf("send data:%s", buf);fflush(stdout);getchar();}close(fd);return 0; }server.c #include "tcp.h"int main(int argc, char *argv[]) {int ret, fd, newfd;Addr_in addr,client_addr;socklen_t addrlen = sizeof(client_addr);char buf[BUFSIZ] = {};//检查参数if(argc 3){fprintf(stderr, "%s addr port\n", argv[0]);exit(EXIT_FAILURE);}//创建套接字if((fd = socket(AF_INET, SOCK_STREAM, 0)) 0)ErrExit("socket");//设置通信结构体bzero(addr, sizeof(addr));addr.sin_family = AF_INET;addr.sin_port = htons(atoi(argv[2]));if(inet_aton(argv[1], addr.sin_addr) == 0){fprintf(stderr, "Invalid address\n");exit(EXIT_FAILURE);}//绑定通
http://wiki.neutronadmin.com/news/244617/

相关文章:

  • 南宁网站定制开发网站开发公司怎么能接到单子
  • 网站栏目模块大连电子商务网站建设
  • vue做的网站多么一个工厂做网站有用吗
  • 做网站都需要哪些费用怎样进行网站建设步骤
  • 网站维护会关闭吗中关村手机排行榜
  • 阿里云服务器 怎么设置网站环境任丘建设银行网站
  • dede如何手机网站和电脑网站的数据同步更新wordpress怎么发邮件
  • 小说网站建设吧中国十大猎头公司介绍
  • 建一个自己用的网站要多少钱做营销型网站的教程
  • 肇庆东莞网站建设大连市建设市场综合管理平台
  • 音乐网站开发开发牌具做网站可以吗
  • 西宁专业网站建设wordpress添加友链
  • 高端网站建设公司哪里济南兴田德润实惠吗免费推广平台软件有哪些
  • 沈阳网站建设首选龙兴科技百度一下 你知道首页
  • 中文域名指向同一个网站电影院卖品套餐计划
  • 贵州网站设计公司2023今天的新闻联播
  • 电子 网站模板装饰公司 网站模板
  • 公司企业建站wordpress 发布api
  • wordpress 英文站赚钱谷歌商店下载
  • 19寸 网站做多大自己建设网站要多久
  • 网站运营的含义是什么北京网站备案负责人变更
  • 公司网站修改 优帮云青岛做网站推广公司
  • 建设诚信网站建设电子票务系统的网站需要多少钱
  • 网站建设开发计入什么会计科目app软件公司
  • 网站编程用什么语言网站页面不更新
  • 住房和城乡建设网站注册服务公司流程和费用
  • 建设企业网站内容wordpress题库制作
  • 精品网站建设费用 要上磐石网络肥城网站建设推广
  • 免费空间 上传网站专业网站设计第三方
  • 建筑行业官方网站可以做公司宣传的网站有哪些内容