随笔分类 -  c/c++编程

c++11 记录
摘要:#include #include #include #include #include #include struct A{ int a; std::string name; }; void fun(int) { std::cout : " : " : "; return a; } virtual ~Bar(){} publi... 阅读全文

posted @ 2018-04-23 13:14 沐浴凌风 阅读(190) 评论(0) 推荐(0) 编辑

GDB 调试多线程多进程
摘要:GDB是linux下的调试利器,在c/c++程序开发过程中必不可少的。这里总结一下多进程和多线程的调试方法和技巧。 多进程的调试: 如下示例 编译 gcc -g process.c -o process -g一定要加上,否则没有调试信息。 1. 如果我想要锁定子进程/父进程该怎样? 这里在fork之 阅读全文

posted @ 2018-03-27 15:14 沐浴凌风 阅读(792) 评论(0) 推荐(0) 编辑

libevent中的基本数据结构---queue.h
摘要:使用例子如下: 1 #include "list.h" 2 #include <stdlib.h> 3 #include <stdio.h> 4 5 struct Person{ 6 int age; 7 double length; 8 SLIST_ENTRY(Person) next; 9 }; 阅读全文

posted @ 2018-03-22 08:59 沐浴凌风 阅读(1441) 评论(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 事件管理和添加事件
摘要:/** 我们先来看一下事件的创建*/struct event * event_new(struct event_base *base, evutil_socket_t fd, short events, void (*cb)(evutil_socket_t, short, void *), void *arg) { struct event *ev; ev = mm_mall... 阅读全文

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

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) 编辑

gdb的多线程调试
摘要:info threads 可以查看当前进程有哪些线程 thread ID 可以切换到线程ID bt 查看当前线程堆栈 set scheduler-locking on多线程调试过程中, 线程会来回切换, 使用它即可锁定一个线程。 当程序被打断点时, 所有线程都会停下 如果不希望其他线程也停下, 可以 阅读全文

posted @ 2017-10-30 10:25 沐浴凌风 阅读(293) 评论(0) 推荐(1) 编辑

struct 类型指针技巧
摘要:此类型对于两种结构的查找和删除都十分方便,实际项目中也常常用到。 此类型对于两种结构的查找和删除都十分方便,实际项目中也常常用到。 阅读全文

posted @ 2017-09-28 09:37 沐浴凌风 阅读(354) 评论(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) 编辑

daemon 启动system V init 和 systemd 配置
摘要:先试着写一个udpserver的daemon #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <netinet/in 阅读全文

posted @ 2017-02-23 12:46 沐浴凌风 阅读(300) 评论(0) 推荐(0) 编辑

导航