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

免费网站商城建设做网站 商标分类

免费网站商城建设,做网站 商标分类,长春市建设工程造价管理协会网站,中国广告设计网目录 一、前言 二、看看效果 三、程序 --------------------------------------------------------------------------------------------------------------------------------- 工作之后真是太忙了,这次把周末某清的兼职辞了,这个周末摆烂了&#…

目录

一、前言

二、看看效果

三、程序


---------------------------------------------------------------------------------------------------------------------------------

工作之后真是太忙了,这次把周末某清的兼职辞了,这个周末摆烂了,虽然不干了但是大家想报培训班的还是可以找我可以给大家点优惠,我顺便加个餐哈哈。言归正传,清理库存的时候发现有个网络编程的小项目分享给大家,后面争取每个周末都更新,并且在B站开始录点系列课程从c开始零基础学习,不收大家学费,如果发现我有讲的和你理解的不一致可以一起讨论下。为啥要零基础呢,因为我分享一些稍微进阶的技术在C站看的人太少了,这样没有意义,我从基础的重新开始做就可以有更多的朋友加入进来。做这些东西一是为了提高知名度,二是为了赚钱,但是基础知识我不会赚大家的钱,只赚官方的。毕竟学基础知识的同学门应该大多都是学生,我也是刚毕业没多久比较理解大家。

---------------------------------------------------------------------------------------------------------------------------------

一、前言

        网络编程是一个很重要的知识。只是在日常生活中大家见到的和网络相关的其实是java写的,因为java开发同样的项目比c要快的多,也比c更容易学。但是最底层的东西还是c做的。今天我们就一起在linux环境下做一个网络编程的小项目吧。

不了解网络编程的可以参考我以前发的文章,点击上面的专栏即可快速访问。

二、看看效果

        首先拿到源码我们看到都是用tab做缩进的,这样不美观,换个编译器长度可能不一样,我们统一用四个空格。据说用空格的工程师比tab的薪资高10%。

        如果用vscode做编辑器远程ubuntu工作的话可以点击.*然后输入\t即可选中所有的tab,一键替换即可。

我这个有中文插件没有的话输入Indentation查找。

编译一下创建两个目录分别存放服务器和客户端程序。

修改mc_cs命令的目标位置

运行发现会报错,因为他要读取.config文件

添加后运行

又报错了,因为没改.config

获取一下ip

bind: Cannot assign requested address
还是有这个错误我重构下代码

这里改成0可以选择所有本地ip

需要注意刚刚改tab时别改makefile因为他是按tab来的

右面是客户端我们可以把这些指令作为参数给程序传入

这个配置文件服务器和客户端都要接受

 运行时没法替换哦

更多功能大家自行尝试吧。

三、程序

服务器程序

#include "file_transfer.h"void Usage(int argc, char *argv[]);int main(int argc, char *argv[])
{char buf[BUFSIZ] = {};struct config conf;struct file_transfer *ft = (struct file_transfer *)buf;/*参数检查*/Usage(argc, argv);/*根据config初始化环境*/FT_InitConfig(&conf);/*准备套接字*/int fd = SocketInit(conf.ip, conf.port, false);/*执行相应功能*/switch(argv[1][1]) {case 'g': //获取文件FT_GetFile(fd, argv[2], ft);break;case 'p': //上传文件FT_PutFile(fd, argv[2], ft);break;case 'l'://获取文件列表FT_FileList(fd, ft);break;case 's'://同步文件信息FT_Sync(fd, ft);break;default:fprintf(stderr, "Invalid option!\n");}/*关闭文件描述符*/close(fd);return 0;
}void Usage(int argc, char *argv[]){if(argc < 2){fprintf(stderr, "%s[type]<argment>\n", argv[0]);fprintf(stderr, "\t[type]<filename> -g: get file.\n");fprintf(stderr, "\t[type]<filename> -p: put file.\n");fprintf(stderr, "\t[type] -l: upload file list\n");fprintf(stderr, "\t[type] -s: File synchronization.\n");exit(EXIT_FAILURE);}if((argv[1][1] == TYPE_GET || argv[1][1] == TYPE_PUT) && argc < 3){fprintf(stderr, "\t[type]<filename> -g: get file.\n");fprintf(stderr, "\t[type]<filename> -p: put file.\n");exit(EXIT_FAILURE);}
}

客户端程序

#include "file_transfer.h"void Client_Handle(int newfd, struct file_transfer *ft);int main(int argc, char *argv[])
{char buf[BUFSIZ] = {};int fd, newfd;struct config conf;struct file_transfer *ft = (struct file_transfer *)buf;/*根据config初始化环境*/FT_InitConfig(&conf);/*准备套接字*/fd = SocketInit(conf.ip, conf.port, true);/*循环处理客户端请求*/while(1){/*接收来自客户端的连接*/newfd = accept(fd, NULL, NULL);Client_Handle(newfd, ft);close(newfd);}close(fd);return 0;
}void Client_Handle(int newfd, struct file_transfer *ft){char *err_str = "Invalid option!";/*接收客户端数据*/while(Read(newfd, ft, SIZE_FT_TYPE) > 0){switch(ft->type){case TYPE_GET://处理获取文件的请求FT_GetFileHandler(newfd, ft);break;case TYPE_PUT://处理上传文件的请求FT_PutFileHandler(newfd, ft);break;case TYPE_LIST://处理获取文件列表的请求FT_FileListHandler(newfd, ft);break;case TYPE_SYNC://同步文件信息FT_SyncHandler(newfd, ft);break;default:Write(newfd, err_str, strlen(err_str));}}
}

all:client serverCFLAGS=-g -Wallclient:client.c net.c file_transfer.cserver:server.c net.c file_transfer.cinstall:cp client ../client/cp server ../server/cp .config ../server/cp .config ../client/clean:-rm client server


文章转载自:

http://EJ74vuRa.Lgwjh.cn
http://Peusz7AF.Lgwjh.cn
http://t2BeRrEf.Lgwjh.cn
http://YJHrzAeG.Lgwjh.cn
http://mmF70kVh.Lgwjh.cn
http://2LK5N0Nt.Lgwjh.cn
http://JiKp0iJy.Lgwjh.cn
http://EveYja5w.Lgwjh.cn
http://TYKsDHQU.Lgwjh.cn
http://FaUENhOt.Lgwjh.cn
http://1jQa9G17.Lgwjh.cn
http://bW0ylofw.Lgwjh.cn
http://wOv9WeN8.Lgwjh.cn
http://KgDlYuQN.Lgwjh.cn
http://yjaEgOZ6.Lgwjh.cn
http://AufTsuZB.Lgwjh.cn
http://P0OjkVy5.Lgwjh.cn
http://1IiQrxAD.Lgwjh.cn
http://438ONCip.Lgwjh.cn
http://ZTAFGqoc.Lgwjh.cn
http://Y7mlE3Yy.Lgwjh.cn
http://3MiAgmYN.Lgwjh.cn
http://7mNUP50f.Lgwjh.cn
http://aGRBRlDw.Lgwjh.cn
http://cOK8KaC7.Lgwjh.cn
http://o6lgFZyV.Lgwjh.cn
http://ASuHW2R9.Lgwjh.cn
http://im3jvoHC.Lgwjh.cn
http://CiTybtXw.Lgwjh.cn
http://wWS7XbvW.Lgwjh.cn
http://www.dtcms.com/wzjs/680028.html

相关文章:

  • 富阳区建设局网站首页在线做的网站
  • 关于网站建设的建议高端网站搭建
  • 怎么联系百度推广长春网站推广优化公司
  • 建设银行激活网站网站建设企业的未来发展计划
  • 自己如何做简单网站网站管理cms
  • 农村建设自己的网站首页360免费wifi连不上
  • 唐山的做网站的企业wordpress怎么升级
  • mvc中手把手做网站山东省城乡与住房建设厅网站首页
  • 生产管理网站开发网站是如何建立的呢
  • 深圳营销外贸网站制作网站开发 activex
  • 贺州市八步区建设局网站网站主办者是什么意思
  • 响应式网站的设计尺寸做网站上传那个目录
  • 射阳网站开发wordpress内容类型
  • 找外包公司做网站价钱代加工订单
  • 怎样建设邮箱网站网站设计风格的关键词
  • 网站模版免费下载深圳公众号开发公司
  • 350做网站深圳手机自己做网站
  • 网站设计 网站建设 手机网站建设深圳网站制作公司售后
  • dw中怎样做网站二级页面特价网站建设价格低
  • 郑州工程建设信息网站赣州人才网招聘信息
  • 宁德网站建设国家企业信用信息没有网站怎么做
  • 网站开发工期安排表多语言网站建设
  • 班级网站页面设计营销是什么意思
  • 可以看那种东西的手机浏览器科学新概念seo外链
  • 成都市公园城市建设局网站酒店营销策划与运营
  • 图书网页设计网站上海华讯网络公司排名
  • 制作一个静态网站的步骤做微信投票的网站
  • js网站模板怎么用wordpress配置数据库失败
  • 做网站需要什么图片网站制作优势
  • 网站屏蔽国内ip用动易做的诗歌协会网站