Linux网络编程
文章平均质量分 74
FBI-PC
这个作者很懒,什么都没留下…
展开
-
Tinyhttpd的实现和一些基本问题的解决
TInyhttpd是一个简单的http服务器的实现,代码总共有500多行,但是读下来对http的具体实现过程和linux网络编程的学习都很有好处。我重写了代码,然后进行了详细的注释。注释见详细代码。 具体的可以用图表示: 代码:/*#!/usr/bin/env* ******************************************************* Last...原创 2018-05-07 21:26:55 · 1640 阅读 · 5 评论 -
URL、URI和URN简单总结
转载至:https://www.cnblogs.com/ndos/p/9121288.html。先举一个例子,让大家对这三个名词又一个基本的概念:1⃣️ ftp://ftp.is.co.za/rfc/rfc1808.txt2⃣️ http://www.cnblogs.com/nods/p/8985322.html#position上面列举了十分常见的两个网络地址,这两个地址都是 URI。...转载 2019-03-30 20:54:34 · 187 阅读 · 0 评论 -
Reactor模式简要介绍
定义反应器设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。其中Wikipedia上说:“The reactor design pattern is an event handling patt...转载 2019-03-26 14:54:40 · 773 阅读 · 0 评论 -
互斥锁实现生产者消费者队列
在muduo里经常看到生产者消费者模型,所以用互斥锁和条件变量实现了一些。一些tips:如果使用循环的话,生产者和消费者线程个数应该相等,这样才能做到供需平衡。还有对于pthread_cond_wait这个函数的讲解,为什么要传递两个参数进去呢?比较好奇的是为什么传递互斥锁变量上去,因为在调用pthread_cond_wait的时候,会先对互斥锁变量mutex进行解锁,然后当前面的条件变量满足...原创 2019-03-08 22:45:32 · 294 阅读 · 0 评论 -
Linux写时拷贝技术(copy-on-write)
转载自 这位博主 不经意间看到这篇帖子,想起实习面试的时候再讨论fork时,谈到了这个问题。做一个记录吧。原帖见:Linux写时拷贝技术(copy-on-write) COW技术初窥在linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制”技术,也就是只有进程空间的各段的内容要发生变化时,才将父进...转载 2018-09-16 15:55:56 · 195 阅读 · 0 评论 -
Linux中netstat和ps命令的使用
Linux查看端口号占用命令netstat -pan | grep 12345通过进程ID查找程序 ps -aux | grep 12345原创 2018-09-08 16:16:06 · 1314 阅读 · 0 评论 -
高级I/O函数之sendfile函数
sendfile函数在两个文件描述符之间传递数据(完全在内核中操作),从而避免了内核缓冲区和用户缓冲区之间的数据拷贝,效率很高,被称为零拷贝。函数定义为:#include<sys/sendfile.h>ssize_t senfile(int out_fd,int in_fd,off_t* offset,size_t count);in_fd参数是待读出内容的文件描述符,out...原创 2018-08-26 15:57:48 · 21068 阅读 · 5 评论 -
TCP协议详解(一) TCP服务的特点和TCP头部结构
从重点内容四方面来讨论TCP协议:1:TCP头部信息。TCP头部信息出现在每个TCP报文段中,用于指定通信的源端端口号、目的端端口号、管理TCP连接,控制两个方向的数据流。 2:TCP状态转移过程。TCP连接的任意一端都是一个状态机。在TCP连接从建立到断开整个过程中,连接两端的状态机将经历不同的状态变迁。 3:TCP数据流 通过分析TCP数据流,我们就可以从网络应用程序外部来了解应用层协...原创 2018-08-13 16:17:53 · 3303 阅读 · 0 评论 -
连接文件: ln
参考自 &lt;&lt;鸟哥的私房菜 基础学习篇&gt;&gt; 加入点自己的理解。 在LInux下面的连接文件有两种,一种是类似WIndows的快捷方式功能的文件,可以让你快速连接到目标文件(或目录);另一种则是通过文件系统的inode连接来产生新文件名,而不是产生新文件,这种称为硬连接(hard link)。hard link(硬连接或实际连接) 首先介绍几个信息: 1:每个文件都会...原创 2018-06-01 13:45:31 · 529 阅读 · 0 评论 -
关于epoll的et模式一次没读完,下次有新数据来了,还会触发么?
我是看了群主的公众号以后又疑问,刚好上次头条面试面试官也问我了,然后问大家也是模棱两可,所以我把群主的代码稍微改了下。公众号名称:高性能服务器开发问题是:当epoll触发可读时,万一数据没有从缓冲区读完,下次有新的数据过来,还会触发么?答案是: 会触发et模式触发是这样说的:由不可读变为可读时触发读事件,由不可写变为可写触发写事件。 有点宏观然后我们具体看代码:#include<...原创 2019-03-27 11:27:19 · 2788 阅读 · 3 评论