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

高密建设局网站互联网平台推广是什么意思

高密建设局网站,互联网平台推广是什么意思,新手练习做网站哪个网站比较合适,WordPress任务悬赏插件目录 1--基于TCP的半关闭 1-1--TCP单方面完全断开的问题 1-2--shutdown()函数 1-3--半关闭的必要性 2--基于半关闭的文件传输程序 1--基于TCP的半关闭 1-1--TCP单方面完全断开的问题 Linux 系统中的 close 函数会将 TCP Socket 的连接完全断开,这意味着不能收…

目录

1--基于TCP的半关闭

1-1--TCP单方面完全断开的问题

1-2--shutdown()函数

1-3--半关闭的必要性

2--基于半关闭的文件传输程序


1--基于TCP的半关闭

1-1--TCP单方面完全断开的问题

        Linux 系统中的 close 函数会将 TCP Socket 的连接完全断开,这意味着不能收发数据(关闭了输入流和输出流),这可能会导致主机 A 无法收到主机 B 的数据(主机A的输入流被关闭了); 

1-2--shutdown()函数

#include <sys/socket.h>
int shutdown(int sock, int howto);
// 成功时返回 0, 失败时返回 -1
// sock 表示需要断开的 Socket 的文件描述符
// howto 表示传递断开的方式信息

        shutdown() 函数可以避免上面完全关闭导致数据丢失的问题,其通过指定断开的方式来选择性地断开输入流、输出流

        断开的方式通过第二个参数来指定,其中 SHUT_RD 表示断开输入流SHUT_WR 表示断开输出流SHUT_RDWR 表示同时断开 I/O 流

1-3--半关闭的必要性

        对于服务器端/客户端的数据传输问题,传输文件的服务器端只需连续传输文件数据即可,但客户端无法知道何时结束数据的接收;

        为了解决上述问题,服务器端应向客户端传递一个 EOF 表示文件传输结束,而客户端通过接收到 EOF 知晓文件传递结束,可以停止接收数据

        断开输出流可以向外传递 EOF(无论是设置 SHUT_WR 还是直接使用 close() 函数);

2--基于半关闭的文件传输程序

服务器端:

// gcc file_server.c -o file_server
// ./file_server 9190#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>#define BUF_SIZE 30void error_handling(char *message){fputs(message, stderr);fputc('\n', stderr);exit(1);
}int main(int argc, char *argv[]){int serv_sd, clnt_sd;FILE* fp;char buf[BUF_SIZE];int read_cnt;struct sockaddr_in serv_adr, clnt_adr;socklen_t clnt_adr_sz;if(argc != 2){printf("Usage : %s <port>\n", argv[0]);exit(1);}fp = fopen("file_server.c", "rb");serv_sd = socket(PF_INET, SOCK_STREAM, 0);memset(&serv_adr, 0, sizeof(serv_adr));serv_adr.sin_family = AF_INET;serv_adr.sin_addr.s_addr = htonl(INADDR_ANY);serv_adr.sin_port = htons(atoi(argv[1]));bind(serv_sd, (struct sockaddr*)&serv_adr, sizeof(serv_adr));listen(serv_sd, 5);clnt_adr_sz = sizeof(clnt_adr);clnt_sd = accept(serv_sd, (struct sockaddr*)&clnt_adr, &clnt_adr_sz);while(1){read_cnt = fread((void*)buf, 1, BUF_SIZE, fp);if(read_cnt < BUF_SIZE){write(clnt_sd, buf, read_cnt);break;}write(clnt_sd, buf, BUF_SIZE);}shutdown(clnt_sd, SHUT_WR);read(clnt_sd, buf, BUF_SIZE);printf("Message from client: %s \n", buf);fclose(fp);close(clnt_sd);close(serv_sd);return 0;}

客户端:

// gcc file_client.c -o file_client
// ./file_client 127.0.0.1 9190#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>#define BUF_SIZE 30void error_handling(char *message){fputs(message, stderr);fputc('\n', stderr);exit(1);
}int main(int argc, char *argv[]){int sd;FILE* fp;char buf[BUF_SIZE];int read_cnt;struct sockaddr_in serv_adr;if(argc != 3){printf("Usage : %s <IP> <port>\n", argv[0]);exit(1);}fp = fopen("receive.dat", "wb");sd = socket(PF_INET, SOCK_STREAM, 0);memset(&serv_adr, 0, sizeof(serv_adr));serv_adr.sin_family = AF_INET;serv_adr.sin_addr.s_addr = inet_addr(argv[1]);serv_adr.sin_port = htons(atoi(argv[2]));connect(sd, (struct sockaddr*)&serv_adr, sizeof(serv_adr));while((read_cnt = read(sd, buf, BUF_SIZE)) != 0){fwrite((void*)buf, 1, read_cnt, fp);}puts("Received file data");write(sd, "Thank you", 10);fclose(fp);close(sd);return 0;
}

运行结果:

http://www.zhongyajixie.com/news/8735.html

相关文章:

  • 国外公共空间设计网站北京网站建设制作开发
  • 自己怎么做淘宝客网站吗如何做好宣传推广
  • 梅州做网站需要多少钱免费网站收录入口
  • 做视频有赚钱的网站怎么让百度搜出自己
  • 深圳做手机网站建设seo网站搜索优化
  • 新手用jsp做网站会员卡营销策划方案
  • python适合大型网站开发吗口碑营销案例分析
  • 找代码的网站游戏推广员上班靠谱吗
  • 吴江建设网站百度关键词优化快速排名软件
  • 成都搭建网站app拉新
  • 做外贸相关的网站关键词代发排名推广
  • 鲁谷做网站的公司在线代理浏览网站
  • 深圳网站建设 迈网络营销战略
  • 做淘宝主要看哪些网站百度官网首页入口
  • 找人做网站一套多少钱seo工资
  • 网站建设编程优化网站平台
  • 常州钟楼区邹区建设局网站全网营销推广平台
  • asp系统网站怎么做优化运营网站
  • 网站做实名认证黑科技推广软件
  • 网站开发专业哪些网站可以发广告
  • 天津做网站价格百度推广账号
  • 重庆网站制作设计百度网站的网址是什么
  • 网站开发人员绩效考核表如何建立和设计公司网站
  • 非交互式网站可以做商城吗seo推广平台
  • 成都 网站建设培训学校今天的最新新闻内容
  • 设计某网站的登录和注册程序设计网站大全
  • 六安做网站的windows优化大师会员兑换码
  • 哪个网站可以做教师招聘题目抚州seo排名
  • 做数独网站能挣钱吗天津百度推广
  • 深圳网站商城定制设计百度账号登陆