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

高埗镇仿做网站网站空间类型

高埗镇仿做网站,网站空间类型,巴南网站制作,做网站参考文献之前写了篇博客#xff1a;AF_UNIX和127.0.0.1(AF_INET)回环地址写数据速度对比 然后利用的是发送端读取大文件#xff0c;接收方接收并保存为文件的方式进行测试#xff0c;结果发现#xff0c;AF_UNIX并未比127.0.0.1(AF_INET)回环地址优秀#xff0c;若单次发送的字节数…之前写了篇博客AF_UNIX和127.0.0.1(AF_INET)回环地址写数据速度对比 然后利用的是发送端读取大文件接收方接收并保存为文件的方式进行测试结果发现AF_UNIX并未比127.0.0.1(AF_INET)回环地址优秀若单次发送的字节数少时回环地址反而更快。 由于测试时发送的是1.15G大小的文件比较快就发送结束了而且读文件写文件是个比较费时的操作本人考虑到读写文件费时的影响决定发送端自己构造字符串接收方只统计接收到的字符个数并不写文件。然后发送端发送100秒对比下100秒之内AF_UNIX和回还地址接收到的字节个数。 AF_UNIX服务端代码(unixsocketserver2.c) #include stdlib.h #include stdio.h #include stddef.h #include sys/socket.h #include sys/un.h #include errno.h #include string.h #include unistd.h #include ctype.h #define MAXLINE 80 char *socket_path /tmp/server.socket; #define RECV_LEN 1000000int main(void) { fd_set readmask, exceptmask;struct timeval tv;int maxfd FD_SETSIZE;int nready 0;char buf[RECV_LEN 1];int readbyte, writebyte;struct sockaddr_un serun, cliun; socklen_t cliun_len; int listenfd, connfd, size; if ((listenfd socket(AF_UNIX, SOCK_STREAM, 0)) 0) { perror(socket error); exit(1); } long long allrecvbyte 0;memset(serun, 0, sizeof(serun)); serun.sun_family AF_UNIX; strcpy(serun.sun_path, socket_path); size offsetof(struct sockaddr_un, sun_path) strlen(serun.sun_path); unlink(socket_path); if (bind(listenfd, (struct sockaddr *)serun, size) 0) { perror(bind error); exit(1); } printf(UNIX domain socket bound\n); if (listen(listenfd, 20) 0) { perror(listen error); exit(1); } printf(Accepting connections ...\n); cliun_len sizeof(cliun); if ((connfd accept(listenfd, (struct sockaddr *)cliun, cliun_len)) 0){ perror(accept error); goto end; }time_t now, endtime;now time(NULL);while(1){FD_ZERO(readmask);FD_ZERO(exceptmask);FD_SET(connfd, readmask);FD_SET(connfd, exceptmask);tv.tv_sec 3;tv.tv_usec 0;nready select(maxfd, readmask, NULL, exceptmask, tv);if(nready 0){goto end;}if(nready 0){printf(nready 0\n);continue;}if(FD_ISSET(connfd, readmask)){readbyte recv(connfd, buf, RECV_LEN, 0);if(readbyte 0){perror(readbyte 0);goto end;}if(readbyte 0){perror(readbyte 0);goto end;}if(readbyte 0){allrecvbyte readbyte;}}if(FD_ISSET(connfd, exceptmask)){printf(select, exceptmask\n);goto end;}} end:endtime time(NULL);printf(costs %d seconds, allrecvbyte is %lld\n, endtime - now, allrecvbyte);close(connfd);close(listenfd); return 0; } AF_UNIX客户端代码(unixsocketclient2.c) #include stdlib.h #include stdio.h #include stddef.h #include sys/socket.h #include sys/un.h #include errno.h #include string.h #include unistd.h #define SEND_LEN 1000000char *client_path /tmp/client.socket; char *server_path /tmp/server.socket; int main() { struct sockaddr_un cliun, serun; int len; int sockfd, n; int i 0;if ((sockfd socket(AF_UNIX, SOCK_STREAM, 0)) 0){ perror(client socket error); exit(1); } // 一般显式调用bind函数以便服务器区分不同客户端 memset(cliun, 0, sizeof(cliun)); cliun.sun_family AF_UNIX; strcpy(cliun.sun_path, client_path); len offsetof(struct sockaddr_un, sun_path) strlen(cliun.sun_path); unlink(cliun.sun_path); if (bind(sockfd, (struct sockaddr *)cliun, len) 0) { perror(bind error); exit(1); } memset(serun, 0, sizeof(serun)); serun.sun_family AF_UNIX; strcpy(serun.sun_path, server_path); len offsetof(struct sockaddr_un, sun_path) strlen(serun.sun_path); if (connect(sockfd, (struct sockaddr *)serun, len) 0){ perror(connect error); exit(1); } int sendbyte 0;int alreadysendbyte 0;long long allsendbyte 0;char buf[SEND_LEN 1];time_t begin time(NULL);time_t now time(NULL);int continueSeconds 0;while(continueSeconds 100){alreadysendbyte 0;for(i 0; i SEND_LEN; i){buf[i] i 1;}n SEND_LEN;sendbyte send(sockfd, buf, n, 0);if(sendbyte -1){perror(send error);goto end;}alreadysendbyte sendbyte;while(alreadysendbyte n){sendbyte send(sockfd, buf alreadysendbyte, n - alreadysendbyte, 0);if(sendbyte -1){perror(send error);goto end;}alreadysendbyte sendbyte;}allsendbyte n;now time(NULL);continueSeconds now - begin;} end:printf(allsendbyte is %lld\n, allsendbyte);close(sockfd);return 0; } 回环地址服务端代码(loopaddrserver2.c) #include sys/socket.h #include arpa/inet.h #include string.h #include stdio.h #include stdlib.h#define RECV_LEN 1000000int main(){fd_set readmask, exceptmask;struct timeval tv;int maxfd FD_SETSIZE;int nready 0;char buf[RECV_LEN 1];int readbyte, writebyte;int serv_socksocket(AF_INET,SOCK_STREAM,0);long long allrecvbyte 0;struct sockaddr_in serv_addr;memset(serv_addr,0,sizeof(serv_addr));serv_addr.sin_familyAF_INET;serv_addr.sin_addr.s_addrhtonl(INADDR_ANY);serv_addr.sin_porthtons(9990);bind(serv_sock,(struct sockaddr*)serv_addr,sizeof(serv_addr));listen(serv_sock,5);struct sockaddr_in clnt_addr;socklen_t clnt_addr_sizesizeof(clnt_addr);int clnt_sockaccept(serv_sock,(struct sockaddr*)clnt_addr,clnt_addr_size);time_t now, endtime;now time(NULL);while(1){FD_ZERO(readmask);FD_ZERO(exceptmask);FD_SET(clnt_sock, readmask);FD_SET(clnt_sock, exceptmask);tv.tv_sec 3;tv.tv_usec 0;nready select(maxfd, readmask, NULL, exceptmask, tv);if(nready 0){goto end;}if(nready 0){printf(nready 0\n);continue;}if(FD_ISSET(clnt_sock, readmask)){readbyte recv(clnt_sock, buf, RECV_LEN, 0);if(readbyte 0){perror(readbyte 0);goto end;}if(readbyte 0){perror(readbyte 0);goto end;}if(readbyte 0){allrecvbyte readbyte;}}if(FD_ISSET(clnt_sock, exceptmask)){printf(select, exceptmask\n);goto end;}} end: endtime time(NULL);printf(costs %d seconds, allrecvbyte is %lld\n, endtime - now, allrecvbyte);close(clnt_sock);close(serv_sock);return 0; } 回环地址客户端代码(loopaddrclient2.c) #includesys/socket.h #includearpa/inet.h #includestdio.h #includestring.h #include errno.h #include stdlib.h#define SEND_LEN 1000000int main(){int socksocket(AF_INET,SOCK_STREAM,0); int n 0;int i 0;struct sockaddr_in serv_addr;memset(serv_addr,0,sizeof(serv_addr));serv_addr.sin_familyAF_INET;serv_addr.sin_addr.s_addrinet_addr(127.0.0.1);serv_addr.sin_porthtons(9990);if(connect(sock,(struct sockaddr*)serv_addr,sizeof(serv_addr)) 0){perror(connect failed);goto end;}int sendbyte 0;int alreadysendbyte 0;long long allsendbyte 0;char buf[SEND_LEN 1];time_t begin time(NULL);time_t now time(NULL);int continueSeconds 0;while(continueSeconds 100){alreadysendbyte 0;for(i 0; i SEND_LEN; i){buf[i] i 1;}n SEND_LEN;sendbyte send(sock, buf, n, 0);if(sendbyte -1){perror(send error);goto end;}alreadysendbyte sendbyte;while(alreadysendbyte n){sendbyte send(sock, buf alreadysendbyte, n - alreadysendbyte, 0);if(sendbyte -1){perror(send error);goto end;}alreadysendbyte sendbyte;}allsendbyte n;now time(NULL);continueSeconds now - begin;} end:printf(allsendbyte is %lld\n, allsendbyte);close(sock);return 0; } 测试结果 单次send字节数为10000时AF_UNIX接收字节数为30240650000127.0.0.1(AF_INET)接收字节数为36394910000。 单次send字节数为100000时AF_UNIX接收字节数为40230300000127.0.0.1(AF_INET)接收字节数为38364400000。 单次send字节数为1000000时AF_UNIX接收字节数为41368000000127.0.0.1(AF_INET)接收字节数为42221000000。 可见AF_UNIX比回环地址并无明显优势
http://www.w-s-a.com/news/218022/

相关文章:

  • 自己做网站卖衣服cms做网站容易不
  • 安徽安搜做的网站怎么样手机网站商城建设答辩问题
  • 分析不同网站的优缺点房产网站定制
  • 深圳工业设计大展2021论坛与网站做优化哪个更好
  • 什么网站做招聘比较好网络营销渠道管理
  • 网站建设选择什么模式淘宝网站可以做轮播吗
  • 山西免费网站制作乌市高新区建设局网站
  • 公司网站建设费用会计处理手机app免费下载
  • 网站的做网站的公司网站有些什么内容
  • 网站新类型wordpress 随机文章
  • 电商网站建设会计分录朝阳市网站公司
  • 正邦网站建设 优帮云百姓网征婚
  • 企业网站有哪些举几个例子端午节网站建设目的
  • 南京免费发布信息网站网站建设与管理职责
  • 无锡市建设培训中心网站企业vi设计是啥
  • 宿松网站建设推荐秒搜科技国家官方网站
  • 网站的服务器选择wordpress文章底部加分享
  • 天津专业的网站建设公司阿里云服务器 wordpress
  • 家教辅导培训网站建设中东跨境电商平台有哪些
  • 商城形式的网站需要多少钱做医药商城网站的公司吗
  • 贵阳网站设计zu97彩票创建网站
  • 网站建设与分工的论文足球世界排名
  • 网站首页添加标签如何用模板建站
  • 官方网站包括哪几个网站泰安的网站建设公司哪家好
  • 域名虚拟服务器做网站如何搭建企业网站
  • 用手机做网站服务器口碑好的常州网站建设
  • 摄影网站的设计与实现开题报告太原企业自助建站
  • 做如美团式网站要多少钱做网站怎么去文化局备案
  • 桂平市住房和城乡建设局网站网站建设与管理自考题
  • 怎么做公司网站制作凡科官方网