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

鲜花网站建设策划书网站建设文化流程图

鲜花网站建设策划书,网站建设文化流程图,做钢材销售客户哪里去开发网站,wordpress安装系统目录 server client makefile 运行顺序 FTP#xff08;File Transfer Protocol#xff09;是一种用于在计算机网络上传输文件的标准协议。 它允许用户通过网络将文件从一个计算机#xff08;称为FTP服务器#xff09;传输到另一个计算机#xff08;称为FTP客户端…目录 server client makefile 运行顺序 FTPFile Transfer Protocol是一种用于在计算机网络上传输文件的标准协议。 它允许用户通过网络将文件从一个计算机称为FTP服务器传输到另一个计算机称为FTP客户端 以下是FTP的一般工作流程 建立连接客户端使用FTP客户端软件连接到FTP服务器身份验证客户端在连接建立后提供登录凭据导航文件系统验证成功客户端可以浏览FTP服务器上的文件系统并选择要上传或下载的文件上传文件客户端可以选择要上传到FTP服务器的本地文件并将其发送到服务器下载文件客户端可以选择要从FTP服务器下载的文件并将其复制到本地计算机其他操作FTP还支持其他操作例如重命名文件、删除文件、创建文件夹等 项目功能介绍 均有服务器和客户端代码基于TCP写的。 在同一路径下将客户端可执行代码复制到其他的路径下接下来再不同的路径下运行服务器和客户端。 相当于另外一台电脑在访问服务器。 客户端和服务器链接成功后出现以下提示四个功能 ***************list************** //列出服务器所在目录下的文件名(除目录不显示) ***********put filename********** //上传一个文件 ***********get filename********** //重服务器所在路径下载文件 **************quit*************** //退出(可只退出客户端服务器等待下一个客户端链接) server #include stdio.h #include sys/types.h #include sys/socket.h #include sys/socket.h #include netinet/in.h #include netinet/ip.h #include arpa/inet.h #include unistd.h #include stdlib.h #include sys/types.h #include dirent.h #include sys/types.h #include sys/stat.h #include unistd.h #include string.h #include sys/types.h #include sys/stat.h #include fcntl.hvoid list_server(int acceptfd, char *buf, int size); //list功能 void put_server(int acceptfd, char *buf, int size); //put功能 void get_server(int acceptfd,char *buf, int size); //get功能 int main(int argc, char const *argv[]) {if (argc ! 2){printf(please input %s port\n, argv[0]);return -1;}//1.创建流式套接字int sockfd socket(AF_INET, SOCK_STREAM, 0); //链接if (sockfd 0){perror(socket err.);return -1;}printf(sockfd:%d\n, sockfd); //3//填充ipv4的通信结构体struct sockaddr_in saddr, caddr;saddr.sin_family AF_INET;saddr.sin_port htons(atoi(argv[1])); //8888 int a atoi(8888)//a8888saddr.sin_addr.s_addr inet_addr(0.0.0.0);socklen_t len sizeof(caddr);//2.绑定套接字 ip和端口(自己)if (bind(sockfd, (struct sockaddr *)saddr, sizeof(saddr)) 0){perror(bind err.);return -1;}printf(bind ok.\n);//3.监听if (listen(sockfd, 5) 0){perror(listen err.);return -1;}printf(listen ok.\n);//4.阻塞等待客户端链接while (1){int acceptfd accept(sockfd, (struct sockaddr *)caddr, len);if (acceptfd 0){perror(accept err.);return -1;}printf(acceptfd%d\n, acceptfd); //通信printf(client:ip%s port%d\n,inet_ntoa(caddr.sin_addr),ntohs(caddr.sin_port));//循环收发消息char buf[128];int ret;while (1){ret recv(acceptfd, buf, sizeof(buf), 0);if (ret 0){perror(recv err.);return -1;}else if (ret 0){printf(client exit\n);break;}else{if (strncmp(buf, list, 4) 0){ //打开当前目录读文件判断文件是普通文件将文件名传给客户端list_server(acceptfd, buf, sizeof(buf));}else if (strncmp(buf, put , 4) 0){ //接收文件(本地打开新建文件接收客户端发送过来的内容写到文件)put_server(acceptfd, buf, sizeof(buf));}else if (strncmp(buf, get , 4) 0){ //发送文件//(本地打开文件读文件内容发送给客户端)get_server(acceptfd, buf, sizeof(buf));}}}close(acceptfd);}close(sockfd);return 0; }//3、get void get_server(int acceptfd,char *buf, int size) //buf-put xxx.c {//1打开文件 读int fd open(buf 4, O_RDONLY); //buf-put xxx.cif (fd 0){perror(open file err.);return;}int ret; //实际读到的个数while ((ret read(fd, buf, size - 1)) ! 0){buf[ret] \0; // 将读取的内容以字符串形式结束send(acceptfd, buf, size, 0); // 发送读取的内容给客户端}strcpy(buf, get ok.); // 将get ok.字符串复制到缓冲区send(acceptfd, buf, size, 0); // 发送get ok.给客户端 } //2.接收文件(本地打开新建文件接收客户端发送过来的内容写到文件) void put_server(int acceptfd, char *buf, int size) {// 1. 打开文件以写入方式打开如果不存在则创建如果存在则清空内容int fd open(buf 4, O_TRUNC | O_CREAT | O_WRONLY, 0666);if (fd 0){perror(open err.);return;}while (1){// 2. 接收客户端发送的数据if (recv(acceptfd, buf, size, 0) 0){perror(recv err.);return;}// 3. 检查是否接收到结束标识put ok.if (strncmp(buf, put ok., 7) 0)break;// 4. 将接收到的数据写入文件write(fd, buf, strlen(buf));} }//list打开当前目录读文件判断文件是普通文件将文件名传给客户端 void list_server(int acceptfd, char *buf, int size) {//1.打开当前目录文件DIR *dir opendir(./);if (dir NULL){perror(opendir err.);return;}//2.循环读目录文件 readdirstruct dirent *dp NULL;struct stat st;while ((dp readdir(dir)) ! NULL){//dp-d_name拿到的文件名//判断文件属性statstat(dp-d_name, st);if (S_ISREG(st.st_mode)){strcpy(buf, dp-d_name); // 将文件名拷贝到缓冲区 send(acceptfd, buf, size, 0); // 发送文件名给客户端}}//发送结束标志strcpy(buf, list ok.);send(acceptfd, buf, size, 0); } client #include stdio.h #include sys/types.h #include sys/socket.h #include sys/socket.h #include netinet/in.h #include netinet/ip.h #include arpa/inet.h #include unistd.h #include string.h #include stdlib.h #include sys/types.h #include sys/stat.h #include fcntl.hvoid show(void); void list_client(int sockfd, char *buf, int size); void put_client(int sockfd, char *buf, int size); void get_client(int sockfd, char *buf, int size); int main(int argc, char const *argv[]) {if (argc ! 3){printf(please input %s ip port\n, argv[0]);return -1;}//1.创建套接子int sockfd socket(AF_INET, SOCK_STREAM, 0);if (sockfd 0){perror(socket err.);return -1;}//填充结构体struct sockaddr_in saddr;saddr.sin_family AF_INET;saddr.sin_port htons(atoi(argv[2]));saddr.sin_addr.s_addr inet_addr(argv[1]);if (connect(sockfd, (struct sockaddr *)saddr, sizeof(saddr)) 0){perror(connect err.);return -1;}//收发消息char buf[128];while (1){//1.请求窗口show();//2.获取请求fgets(buf, sizeof(buf), stdin);if (buf[strlen(buf) - 1] \n)buf[strlen(buf) - 1] \0;send(sockfd, buf, sizeof(buf), 0);if (strncmp(buf, list, 4) 0){ //循环接收服务器发送过来的普通文件名输出到终端list_client(sockfd, buf, sizeof(buf));}else if (strncmp(buf, put , 4) 0){ //上传文件(本地打开文件读内容发送给服务器)put_client(sockfd,buf,sizeof(buf));}else if (strncmp(buf, get , 4) 0){ //下载服务器路径下的文件//(本地打开新建文件接收服务器发送过来的内容写到文件)get_client(sockfd,buf,sizeof(buf));}else if (strncmp(buf, quit, 4) 0){break;}}close(sockfd);return 0; } //3.get void get_client(int sockfd, char *buf, int size) {int fd open(buf 4, O_TRUNC | O_CREAT | O_WRONLY, 0666);if (fd 0){perror(open err.);return;}while (1){if (recv(sockfd, buf, size, 0) 0){perror(recv err.);return;}if (strncmp(buf, get ok., 7) 0)break;write(fd, buf, strlen(buf));} } //2.put 上传文件(本地打开文件读内容发送给服务器) void put_client(int sockfd, char *buf, int size) //buf-put xxx.c {//1打开文件 读int fd open(buf 4, O_RDONLY);if (fd 0){perror(open file err.);return;}int ret; //实际读到的个数while ((ret read(fd, buf, size - 1)) ! 0){buf[ret] \0;send(sockfd, buf, size, 0);}strcpy(buf, put ok.);send(sockfd, buf, size, 0); }//1.list:循环接收服务器发送过来的普通文件名输出到终端 void list_client(int sockfd, char *buf, int size) {while (1){if (recv(sockfd, buf, size, 0) 0){perror(list recv err.);return;}if (strncmp(buf, list ok., 8) 0){break;}printf(%s\n, buf);} }void show(void) {printf(************list***************\n);printf(************put filename*******\n);printf(************get filename*******\n);printf(************quit***************\n); } makefile all:gcc server.c -o ser gcc client.c -o cli .PHONY:clean clean:rm ser cli 运行顺序
http://www.pierceye.com/news/721551/

相关文章:

  • 茶叶建设网站的优势小学网站模板
  • 铜川免费做网站公司个人博客页面
  • 织梦网站安装出现404 not found商务网站设计素材
  • 石家庄seo网站排名合肥做网站价格
  • 盘锦市城乡建设厅网站区域代理加盟项目
  • 源码如何做网站个人音乐网站源码搭建
  • 网站推广资讯网站注册界面设计
  • 凡网站建设网站线下推广怎么做
  • 简要描述创建商务站点的商务镇江海绵城市建设官方网站
  • 广东建设局网站首页物流官网网站
  • 网站首页做多大分辨率卖域名做非法网站
  • 内蒙古自治区建设厅网站首页网站如何做cdn
  • 代做计算机毕业设计网站福田庆三明星案例
  • 常用seo站长工具微商引流推广平台
  • 潍坊市作风建设年官方网站央视新闻
  • 东阳app开发广东seo网站设计价格
  • 医院网站开发门诊部网站建设
  • 卫生系统网站的建设和维护uc浏览器官网
  • 曲靖网站制作一条龙深圳网站建设的特殊性
  • 网站建设技术课程设计儿童教育网站怎么做有趣
  • 建设银行网站网址网站推广在线
  • 服务器上网站建设用什么搭建个人网站
  • 网站设计排版怎么做wordpress添加媒体
  • 网站服务器镜像外协加工网最新订单
  • 做网站要准备的资料广州响应式网站
  • 徐州网站建设方案维护wordpress主页访客记录
  • 西安网站优化招聘网多个网站 备案吗
  • 宣威网站wordpress 园林模板
  • 宁夏政务大厅城乡建设厅口网站怎么用抓爬工具做网站
  • 电影网站怎么建设深圳企业营销型网站