随笔分类 -  linux 网络编程

TCP 连接关闭及TIME_WAIT探究
摘要:这里主要记录一下TCP连接在关闭的时刻,有哪些细节问题。方便在以后的程序设计中能够注意这些细节, 以避免出现这些错误。首先我们来看一下TCP的状态转换图。如《unix网络编程》卷一所示如下图: TCP 四次挥手: 挥手时的序号问题 挥手过程中状态转换问题 TIME_WAIT 产生原因 挥手序号问题: 阅读全文

posted @ 2018-03-21 11:12 沐浴凌风 阅读(2096) 评论(0) 推荐(0) 编辑

网络程序中常用的三种心跳机制----服务器端
摘要:心跳检测在网络程序中常常被用到,在客户端和服务器之间暂时没有数据交互时,就需要心跳检测对方是否存活。心跳检测可以由客户端主动发起,也可以由服务器主动发起。在网上看了一下心跳的讲解,大多是千遍一律只是给出了客户端十分简单的Heartbeat。这里提供了三种Echo服务器的HeartBeat 实例可供参 阅读全文

posted @ 2017-12-26 10:32 沐浴凌风 阅读(20726) 评论(1) 推荐(8) 编辑

TCP程序中发送和接收数据
摘要:这里我们来探讨一下在网络编程过程中,有关read/write 或者send/recv的使用细节。这里有关常用的阻塞/非阻塞的解释在网上有很多很好的例子,这里就不说了,还有errno ==EAGAIN 异常等等。首先我们拿一个简单的实例代码看一下。 read/write面临的是什么问题: 字节流套接字 阅读全文

posted @ 2017-12-19 09:51 沐浴凌风 阅读(5485) 评论(10) 推荐(4) 编辑

如何编写一个稳定的网络程序(TCP)
摘要:本节我们看一下怎样才能编写一个基于TCP稳定的客户端或者服务器程序,主要以试验抓包的方式观察数据包的变化,对网络中出现的多种情况进行分析,分析网络程序中常用的技术及它们出现的原因,在之后的编程中能早一点意识到这些潜在问题。实例代码如下: client.c 和server.c 因在试验过程中代码有所改 阅读全文

posted @ 2017-12-15 11:51 沐浴凌风 阅读(3796) 评论(10) 推荐(7) 编辑

Linux 编程--三种常用的定时器
摘要:这节我们来探讨一下linux开发过程中常用的定时器,尤其在网络编程中被常常用到如heartbeat,断线重连等等。这里提供了三种定时器的方案,分别是链表形式的计时器,环型计时器,最小堆计时器。每个都有不同的作用和优势,可以结合实际项目选择或者改良。 链表计时器: 链表计时器是一个实现很简单的一种计时 阅读全文

posted @ 2017-12-13 11:04 沐浴凌风 阅读(4688) 评论(2) 推荐(3) 编辑

Libevent(2.1.8)中的事件结构和管理
摘要:Libevent(2.1.8)中的事件结构体 这里的libevent版本为 2.1.8 。 libevent中事件的结构体struct event,定义在event_struct.h 中, 这里我们简单看一下: 这里可以看到这个版本下的event 结构体比之前的好像少了不少东西, 如之前的结构: 这 阅读全文

posted @ 2017-11-09 15:21 沐浴凌风 阅读(482) 评论(0) 推荐(0) 编辑

epoll 惊群处理
摘要:1 #include <sys/types.h> 2 #include <sys/socket.h> 3 #include <sys/epoll.h> 4 #include <netdb.h> 5 #include <string.h> 6 #include <stdio.h> 7 #include 阅读全文

posted @ 2017-11-09 13:13 沐浴凌风 阅读(726) 评论(0) 推荐(0) 编辑

accept 文件描述符用尽处理
摘要:if (events[i].data.fd == listenfd) { peerlen = sizeof(peeraddr); connfd = ::accept4(listenfd, (struct sockaddr*)&peeraddr, &peerlen, SOCK_NONBLOCK | S 阅读全文

posted @ 2017-09-21 15:11 沐浴凌风 阅读(472) 评论(0) 推荐(0) 编辑

TCP/IP 协议栈 ------ ICMP
摘要:I C M P经常被认为是 I P层的一个组成部分。它传递差错报文以及其他需要注意的信息。I C M P报文通常被I P层或更高层协议( T C P或U D P)使用。一些I C M P报文把差错报文返回给用户进程。 ICMP格式如下: 报文类型及相关说明如下: http://www.cnblogs 阅读全文

posted @ 2017-04-12 12:24 沐浴凌风 阅读(243) 评论(0) 推荐(0) 编辑

TCP/IP 协议栈 -- 编写UDP客户端注意细节
摘要:上节我们说到了TCP 客户端编写的主要细节, 本节我们来看一下UDP client的几种情况,测试代码如下: server: #include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in. 阅读全文

posted @ 2017-04-05 13:23 沐浴凌风 阅读(324) 评论(0) 推荐(0) 编辑

I/O复用中的 select poll 和 epoll
摘要:I/O复用中的 select poll 和 epoll: 这里有一些不错的资料: I/O多路复用技术之select模型: http://blog.csdn.net/nk_test/article/details/49256129 Select的限制和poll(并发的初步知识) http://blog 阅读全文

posted @ 2017-03-20 13:03 沐浴凌风 阅读(176) 评论(0) 推荐(0) 编辑

导航