
网络编程
osDetach
只有孜孜不倦地求索,才有源源不断的收获
展开
-
套接字选项SO_LINGER和SO_REUSEADDR功能分析
SO_REUSEADDR我们都知道,对于服务端,启动后,通过setsocketopt设置SO_REUSEADDR选项,功能是当服务器突然挂掉,可以马上重启,而不用等到time_wait之后,因为tcp通过四次挥手断开连接,再说下四次挥手的各个阶段的状态吧!服务端主动断开连接的话,会发送fin包到客户端,然后服务端进入fin_wait1状态;客户端接到fin包以后,会回复一个确认应答进入到...原创 2019-03-16 11:09:14 · 815 阅读 · 0 评论 -
I/O多路复用深度解析
这两天疯狂刷算法,感觉自己凉了,不看人家的答案自己连题都看不懂。天赋吧,这没得救了。于是决定先把算法放一下,找点比较有意思的事情做做,所以就突发奇想不如看一下epoll源码吧,整天用这个东西,了解一下他实现有益无害吧!在网络编程中,有常用的IO复用有三个,对于不同的场景,各显神通。即select,poll,epoll,当然select和poll不是该篇文章的主角,下面我主要的是epoll的详细...原创 2019-04-08 14:59:46 · 390 阅读 · 0 评论 -
server->client版多线程发送大文件的实现
我只想要快速的传送一个文件,下面的程序没有实现我想要的效果,但还是觉得有必要聊聊多线程发送文件技术中的思想,第一次接触,不是很难,需要的就是`细心`写程序这一点对于我这种人来说难度较大,所以写了好多bug。像往常那样发送文件时效性太低了,发100MB的文件可能需要等一分多钟甚至更长,所以我们需要一种新的手段来发送文件。我们现在说一下服务器给客户端快速发送大文件。主要思想:服务器端指定要发送的文...原创 2019-05-24 22:43:59 · 569 阅读 · 0 评论 -
想了个不是问题的问题
昨天被一个问题困扰到,最后发现这个问题就不是个问题。所以想记录下来,提醒自己一天干点正事,别瞎想!怎么说呢?就是写服务器和客户端程序,两端想互相发送文件,对于小文件来说的话,是没啥,感觉不到发送过程的缓慢,但是换成一个几百兆的文件,就有点累了,得等上个几分钟才能发完,我就想为什么不能实现秒传。所以就在网上学习了多线程发送技术。实现了近百兆文件秒发的目标。觉得自己的目标快实现了。具体功能就是服务器...原创 2019-05-26 08:31:47 · 238 阅读 · 0 评论 -
FastCgi学总结
最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。随着互联网的不断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,那就将任务外包给别人,但是要与第三做个约定,我给你发什么,你就得给我回什么,就是我把请求参数发送给你,然后我接收你的处理结果给客户端。那这个约定就是 comm...原创 2019-08-06 11:08:45 · 280 阅读 · 0 评论 -
DNS服务器原理学习
在使用浏览器时,要访问一些网站的话,就是输入相应网站提供给公众的域名进行访问,但是学过网络编程的也知道,这背后隐藏从域名->IP的转化过程,这就是我们今天要说的内容。主要说说折背后的工作原理吧!DNS(域名系统)是互联网的中心部分,提供网站名称到实际IP的转化服务,所以也称域名系统为域名解析服务器。解析总共六步:迭代查询本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到...原创 2019-08-07 21:10:33 · 590 阅读 · 0 评论 -
Google Protolcol Buffer学习
格式说明及编译test.protosyntax = "proto2";package tutorial;message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOM...原创 2019-08-20 00:08:40 · 473 阅读 · 0 评论 -
RPC的学习总结
这两天看RPC确实有点迷,一些东西看了忘,忘了看!加上还有一些乱七八糟的事,感觉这两天需要整理一下思路,然后根据原理,来实现一个自己的RPC框架。RPC是什么?RPC即远程过程调用,允许一台计算机调用另一台计算机上程序得到结果,而代码中不需要作额外的编程,就像本地调用一样。下面是具体的原理图:本地client接收到调用后,通过client_stub将数据封装成能够进行网络传输的消息...原创 2019-08-20 11:24:46 · 3012 阅读 · 0 评论 -
基于muduo网络库思想设计的web服务器框架
项目放了好长时间,才完成文档说明,这是设计说明以及源代码,欢迎进入我的github,star,fork或者提出指导意见!原创 2019-08-29 23:53:30 · 1023 阅读 · 0 评论 -
web服务器学习---HTTP协议总结
对于之前学过的无论是聊天室服务器,还是回射服务器都是在Linux环境下,写一个终端客户端,用户通过客户端和服务器通过定长的数据包或者Json键值包进行交互.而对于web服务器,服务器还是在终端运行,但是客户端成为了浏览器,用户或者爬虫程序通过浏览器和服务器交互数据,对于一些数据格式分析上,C/S两端也应该达成共识,HTTP是一个客户端和服务器端请求和应答的标准.HTTP协议在讲述之前,我们...原创 2019-02-11 12:36:18 · 623 阅读 · 0 评论 -
I/O模型解析
Linux下的系统I/O在TCP中常见的通过以下几个函数:open(),close(),recv(),send(),lseek(),read(),write()要是我们在服务器程序中对监听套接字不进行非阻塞设置,那么整个程序中调用以上函数处理I/O事件默认就是阻塞的. 阻塞I/O对于阻塞读,即调用read,recv等,将数据从内核态复制到用户态.内核缓冲区没数据就一直等,不做其他事情...原创 2019-02-08 16:22:55 · 275 阅读 · 0 评论 -
聊天室项目文档总结
项目概况该项目是学习完linuxC网络编程后,是对暑假留校所学知识的综合应用实例。项目参考文档:一.LinuxC编程实战 主要参考本书文件系统编程,线程同步,基于tcp/ip协议的网络编程方面的知识二.C prime plus对于里面的一些文件操作,链表,函数指针等操作进行了回顾。三.软工课设发的用宏函数封装的双向链表各种操作头文件list.h(屡试不爽)四.百...原创 2018-09-02 21:54:21 · 3627 阅读 · 3 评论 -
网络编程探究总结之TCP/IP
1.网络体系结构的认识协议 控制网络中数据的传送和接收。定义通信实体交换报文的格式和次序以及报文传输或接收及其他事件所采取的动作。网络的分层结构 各层协议应用层:Teinet ,FTP,HTTP,DNS ,SNMP 和SMTP等传输层:TCP和UDP网络层: IP,ICMP和IGMP链路层:以太网,令牌环网,FDDI等各层功能:应用层:向使用网络的用户提供特定的常用的...原创 2018-09-10 16:48:32 · 290 阅读 · 0 评论 -
网络编程中time_wait的作用和套接字选项SO_REUSEADDR
这两天看APUE为一个简单的问题特别恼火,该问题起源于两个套接字选项就是SO_REUSEADDR和SO_REUSEPORT其实在看的过程中问学长了,学长解释的也比较清楚,就是自己悟性不好,一时半会没理解。自己在网上找了几篇优秀的博客看了,受益颇多!先从套接字选项SO_REUSEADDR说起,当一个没有设置该选项的服务器与客户端建立连接后。然后中断服务器,此时要是马上建立连接的话肯定会出现套接字绑...原创 2018-11-22 14:04:02 · 476 阅读 · 0 评论 -
Talk about the physical link 【arp】
Today I learned about the knowledge about the TCP/IP ,we all know the internet incolude 7 arrangement .I won’t say much !now let’s talk about the konwledge about physical link arp. arp all name is ...原创 2018-12-01 22:46:37 · 180 阅读 · 0 评论 -
一看即懂的TCP首部确认号和序列号解析!!!
仔细检查序列和确认号码。它们存在的目的直接关系到互联网,通常大多数网络都是分组交换(我们将在短时间内解释),因为我们几乎总是发送和接收大于最大传输单元(也称为MTU)的数据 ,大多数网络是1500。我们来看看我们要分析的领域:您可以看到,序列号继续确认号码。我们将要解释这些数字如何增加,它们的意思是什么,各种操作系统如何以不同的方式处理它们,最后是什么方式,这些数字可能成为那些需要牢固的...转载 2019-01-24 00:10:27 · 5708 阅读 · 0 评论 -
TCP/IP传输层原理详解
看完TCP/IP传输层完了之后,感觉对传输层的认识还是比较零散,现在就将这块的内容进行比较系统的总结.传输层协议具有代表性的是TCP协议和UDP协议,TCP是一种可靠的,安全的,通信之前必须建立连接,才能实现数据传送的传输层协议,时效性弱.UDP是一种不可靠,通信之前不需建立连接就可传输数据的传输协议,时效性强.对于两种协议在网络数据传输中各占春秋,没有谁优谁劣区分....原创 2019-01-27 10:10:36 · 5530 阅读 · 0 评论 -
TCP紧急模式理解心得
带外数据当连接某一端发生了比较重要的事情时,需要将该信息迅速通知给对端,由于在网络原创 2019-01-22 20:34:26 · 3139 阅读 · 0 评论 -
c++进程池实现回射服务器
进程池相对于线程池就没那么麻烦,没有条件变量,没有互斥锁,这些东西!比较简单!参考网上资料,实现一个回射服务器,尽管看着人家实现思路写的,还是出现很多问题,太菜了!确实太菜了!process.h#pragma once#include <iostream>#include <assert.h>#include <string.h>#include &...原创 2019-09-30 00:31:21 · 384 阅读 · 0 评论