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

网站建设公司怎样拓展网站业务网站推广每天必做的流程

网站建设公司怎样拓展网站业务,网站推广每天必做的流程,做网站有什么用,yum安装wordpress本期分享的主要是使用UDP实现文件下载功能#xff0c;需要自己编写服务器和客户端#xff0c;实现的功能主要有以下几个#xff1a; #xff08;1#xff09;服务器可以为请求的用户下发文件数据#xff08;前提是服务器得有这个数据文件#xff09; #xff08;2…本期分享的主要是使用UDP实现文件下载功能需要自己编写服务器和客户端实现的功能主要有以下几个 1服务器可以为请求的用户下发文件数据前提是服务器得有这个数据文件 2客户端请求下载数据文件 下面带大家来认真分析下大家可以对照我遇到的问题是不是大家有遇到避免大家踩坑server端代码如下 首先当然还是头文件部分没这个可不行呀哈哈 #ifndef __HEAD_H__ #define __HEAD_H__#include stdio.h #include stdlib.h #include string.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include unistd.h #include fcntl.h #include pthread.h#endif1.接下来看一下具体server的代码实现 #include head.hstruct sockaddr_in senaddr;//存放服务器的Ip以及端口号的结构体 int bindOfIP(const char *pIp, int Port) //绑定服务器的ip和端口 {int sockfd 0;int ret 0;sockfd socket(AF_INET, SOCK_DGRAM, 0);if (-1 sockfd){perror(fail to sockfd);return -1;}senaddr.sin_family AF_INET;senaddr.sin_port htons(Port);senaddr.sin_addr.s_addr inet_addr(pIp);ret bind(sockfd, (struct sockaddr *)senaddr, sizeof(senaddr));if (-1 ret){perror(fail to bind);return -1;}return sockfd; }以下是发送文件的模块自从用了UDP发送数据才知道了IO的部分还比较欠缺那么来看下那一部分有问题 1当选择fread去读取文件的时候第二个参数设置为1也就是每次读取成员的大小一个字节一定要知道它的返回值就是是成功读取文件字节的个数只有当参数不是1的时候那么返回值就是成功读取成员的个数但是最终读取的成员最终还是存放在了我们定义的第一个参数中了 ret fread(tmpbuff, 1, sizeof(tmpbuff), fp);因此在sendto的第三个参数中我们恰好可以使用fread的返回值 sendto(sockfd, tmpbuff, ret, 0, sendaddr, len);2不使用字节进行传输时不能在sendto时把第三个变量换位strlentmpbuff因为二进制文件不允许strlen int sendFile(char *filename, int sockfd, struct sockaddr *sendaddr, socklen_t len) {FILE *fp NULL;char tmpbuff[4096] {0};ssize_t ret 0;char *ptmp NULL;fp fopen(filename, r);if (NULL fp){perror(fail to fopen);return -1;}printf(开始发送!\n);while(1){memset(tmpbuff, 0, sizeof(tmpbuff));ret fread(tmpbuff, 1, sizeof(tmpbuff), fp);if (ret 0){break;}ret sendto(sockfd, tmpbuff, ret, 0, sendaddr, len);if (-1 ret){perror(fail to sendto);return -1;}}memset(tmpbuff, 0, sizeof(tmpbuff));sprintf(tmpbuff, __quit__);ret sendto(sockfd, tmpbuff, strlen(tmpbuff), 0, sendaddr, len);if (-1 ret){perror(fail to sendto);return -1;}return 0; }int main(int argc, const char *argv[]) {int sockfd 0;char filename[32] {0};ssize_t nsize 0;socklen_t len sizeof(senaddr);int ret 0;sockfd bindOfIP(192.168.209.128, 50000);while (1){nsize recvfrom(sockfd, filename, sizeof(filename), 0, (struct sockaddr *)senaddr, len);if (-1 nsize){perror(fail to recvfrom);return -1;}else{printf(请求的文件名和路径:filename %s\n, filename);ret sendFile(filename, sockfd, (struct sockaddr *)senaddr, len);if (0 ret){printf(发送成功!\n);}}}return 0; }2.下面来看一下client端的实现 #include head.hstruct sockaddr_in recvbuf; int bindOfIP(const char *pIp, int Port) {int sockfd 0;int ret 0;sockfd socket(AF_INET, SOCK_DGRAM, 0);if (-1 sockfd){perror(fail to sockfd);return -1;}recvbuf.sin_family AF_INET;recvbuf.sin_port htons(Port);recvbuf.sin_addr.s_addr inet_addr(pIp);ret bind(sockfd, (struct sockaddr *)recvbuf, sizeof(recvbuf));if (-1 ret){perror(fail to bind);return -1;}return sockfd; } //接收服务器的文件 int recvFile(int sockfd, char *filename) {FILE *fp NULL;char tmpbuff[4096] {0};ssize_t nsize 0;printf(进来了\n);fp fopen(filename, w);if (NULL fp){perror(fail to fopen);return -1;}while (1){memset(tmpbuff, 0, sizeof(tmpbuff));nsize recvfrom(sockfd, tmpbuff, sizeof(tmpbuff), 0, NULL, NULL);if (nsize 0){break;}if (!strcmp(__quit__, tmpbuff)){break;}fwrite(tmpbuff, sizeof(char), nsize, fp);fflush(fp);}fclose(fp);return 0; }int main(int argc, const char *argv[]) {int sockfd 0;char filename[32] {0};char *name NULL;ssize_t nsize 0;socklen_t len;struct sockaddr_in senaddr;int ret 0;// sockfd bindOfIP(192.168.209.129, 50001);如果需要可以绑定自己的IP地址和端口sockfd socket(AF_INET, SOCK_DGRAM, 0);if (-1 sockfd){perror(fail to sockfd);return -1;}senaddr.sin_family AF_INET;senaddr.sin_port htons(50000);senaddr.sin_addr.s_addr inet_addr(192.168.209.128);while (1){printf(请输入您需要下载的文件路径:);gets(filename);nsize sendto(sockfd, filename, strlen(filename), 0, (struct sockaddr *)senaddr, sizeof(senaddr));if (-1 nsize){perror(fail to sendto);return -1;}name filename strlen(filename) - 1;while (*name ! /){--name;}name;//解析出文件名printf(name %s\n, name);//调试代码ret recvFile(sockfd, name);if (0 ret){printf(接收成功!\n);break;}}return 0; } 这个就是一个简单的UDP下载服务器的实现其实也是很简单的但是需要注意的细节还是很多的能提高对IO操作以及UDP通信的深入了解不懂就问欢迎评论区留言哦
http://www.hkea.cn/news/14400969/

相关文章:

  • 网站建设网站设秦皇岛海三建设工程集团
  • 四川省住房建设厅网站打不开大连制作网站企业
  • 做手机网站多少钱网站首页图片怎么做
  • 微网站建设及微信推广方案wordpress怎么恢复
  • 企业网站开发软件建设工程造价信息网官网
  • 可信网站验证服务中心六安人论坛
  • 罗湖企业网站建设北仑网站网页建设
  • 自适应网站会影响推广系统维护一般要多长时间
  • wordpress的固定链接如何设置网站优化方案范文
  • 网站代理协议公司网站静态模板
  • 骏域网站建设做网站有没有免费空间
  • 顺德建设局网站网络营销方案包括哪些主要内容?
  • 网站速成班有哪些专业免费的个人简历模板下载
  • 建设网站产品图片显示不全怎么做透明的网站图片
  • 安徽 两学一做 网站教学网站开发应指导方案
  • 网站解决方案设计ppt模板网站排行
  • 做网站python和php哪个好学中国建设银行手机网站
  • P2P网站怎么建设下列不能反应企业网站建立网络
  • 如何优化网站首页代码wordpress个人博客建站
  • 宁波甬晟园林建设有限公司网站保险做的好的网站有哪些内容
  • 英文版科技网站怎样开网店流程视频
  • 邳州网站建设天津wordpress开发
  • 佛山南海网站开发电影网站建设公司
  • 中国免费素材网站电商培训班学了有用吗
  • 网站速成班有哪些专业外包公司催收合法吗
  • 长沙优化网站推广广州注册公司有什么优惠政策
  • 网站设计客户需求里水网站设计
  • 网站访问速度检测新网站如何做快照
  • 上海专业做网站建设如何做上海建站网站建设
  • 网站设计要素做聚美优品网站得多少钱