TCPIP系列博客
计算机网络系列博客打包下载, 主要面向正在处于找工作阶段的本科生阅读
epoll封装与测试代码
在本部分我们实现一个较为好用实用的Epoll并发类, 由于实现代码与使用方式较简单, 因此就不在此赘述了, 下面我还使用了该类实现了一个基于Epoll的echo-server, 以演示该类的用法;
由于此处仅为Epoll类库的第一个版本, 因此错误之处必然会存在, 如果读者在阅读的过程中发现了该类库的BUG, 还望这篇博客的读者朋友不吝赐教; 而作者也会不断的更新该类库(主要更新代码我会发布到此处), 以处理新的业务需求;
shutdown_close
1.close终止了数据传送的两个方向;
而shutdown可以有选择的终止某个方向的数据传送或者终止数据传送的两个方向。
Socket 类封装 改进版
实现中的几个注意点: 1 Socket类几个成员函数的访问权限为protected 使Socket类可以进行继承 但不允许私自使用; 2 TCPClient类的send receive方法使用了著名的writen readn 来源UNP 实现 解决了TCP的粘包问题 3 TCPSe
est_for_shutdown_and_close源代码
1.close终止了数据传送的两个方向;
而shutdown可以有选择的终止某个方向的数据传送或者终止数据传送的两个方向。
2.shutdown how=SHUT_WR(关闭写端)可以保证对等方接收到一个EOF字符(FIN段),而不管是否有其他进程已经打开了套接字(shutdown并没采用引用计数)。
而close需要等待套接字引用计数减为0时才发送FIN段。也就是说直到所有的进程都关闭了该套接字。
test_for_shutdown_and_close
1.close终止了数据传送的两个方向;
而shutdown可以有选择的终止某个方向的数据传送或者终止数据传送的两个方向。
2.shutdown how=SHUT_WR(关闭写端)可以保证对等方接收到一个EOF字符(FIN段),而不管是否有其他进程已经打开了套接字(shutdown并没采用引用计数)。
而close需要等待套接字引用计数减为0时才发送FIN段。也就是说直到所有的进程都关闭了该套接字。
Socket-类封装
实现中的几个注意点:
1)Socket类几个成员函数的访问权限为protected, 使Socket类可以进行继承,但不允许私自使用;
2)TCPClient类的send/receive方法使用了著名的writen/readn(来源UNP)实现, 解决了TCP的粘包问题.
3)TCPServer端添加了地址复用, 可以方便TCP服务器重启;
4)添加了异常类,让我们在编写易出错的代码时,可以解放思想,不用一直考虑该函数调用出错会发生什么情况!
echoServer(按行读取版本)
使用recv_peek实现按行读取readline(只能用于socket)
echoServer定长包与添加报头版本
自定义应用层协议实践
发报文时:前四个字节长度+报文内容一次性发送;
收报文时:先读前四个字节,求出报文内容长度;根据长度读数据。
发送结构:
基于多进程的P2P聊天程序
server端与client都有两个进程:
父进程负责从socket中读取数据将其写至终端, 由于父进程使用的是read系统调用的阻塞版本, 因此如果socket中没有数据的话, 父进程会一直阻塞; 如果read返回0, 表示对端连接关闭, 则父进程会发送SIGUSR1信号给子进程, 通知其退出;
子进程负责从键盘读取数据将其写入socket, 如果键盘没有数据的话, 则fgets调用会一直阻塞;
echoserver多进程版
我们的echo服务器最大的缺点就是无法支持多客户连接,即使客户端能够连接到服务器上,服务器也不为该客户做服务,(直接没什么反应),虽然链接是有的(也就是说,客户端是已经连接到服务器上的了,但是服务器就是不搭理你....)
红黑树(RBtree)实现代码
一个基于C++的红黑树实现, RedBlackTree, C++, 二叉树, 平衡二叉树
线程池(C/C++版)
C/C++ threadpool封装, 线程池, Linux, 多线程, pthread
生产者消费者代码(C++版)
用Posix信号量, Posix互斥量, 解决生产者消费者问题(c++版)
echoServer(thread版)源代码
将并发echo server改造成多线程形式
注意线程竞速问题的解决
ShmFifo源代码(C++版)
我们首先完成C语言版本的shmfifo(基于过程调用), 然后在此基础上实现C++版本的ShmFifo, 将1块共享内存与3个信号量(1个mutext信号量, 1个full信号量, 1个empty信号量)封装成一个类ShmFifo, 然后编写各自的测试代码
shmfifo源代码(C语言版)
使用消息队列即可实现消息的先进先出(FIFO), 但是使用共享内存实现消息的先进先出则更加快速;
所涉及计数: 将申请到的共享内存作为一块缓冲区, 读/写进程不断的从其中读出/写入数据, 而读/写进程则就相当于生产者/消费者了, 因此,使用信号量sem_mutex(初值为1)来互斥访问共享内存, 使用sem_full(初值为共享缓冲区块数), sem_empty(初值为0)来同步两个进程;
NetCat后门工具
Netcat,Windows后门工具,希望能够遵守相关法律,谢谢
C++面向对象多线程编程.pdf
挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了
C++ 多范型设计.pdf
挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了
C++程序员必备常识.pdf
挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了
C++ 编程思想 第2卷 实用编程技术.pdf
挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了
C/C++语言硬件程序设计基于TMS320C5000系列DSP
挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了
C 库函数 Word版
C 库函数 Word版 千辛万苦找打的 的确很有用
GDAL1.8 已经编译完成
一个师兄发给的GDAL1.8 已经编译完成的 省去了大家自己编译繁琐的步骤 遥感 图像处理
Java 程序员上班那点事儿
Java 程序员上班那点事儿 全本 清晰扫描版 花了两块大洋买的
C++ 标准模版库
C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集
合,它提供给程序员一些标准的数据结构的实现如 queues(队列), lists(链表), 和
stacks(栈)等.
C++ STL 提供给程序员以下三类数据结构的实现:
标准容器类
顺序性容器
vector 从后面快速的插入与删除,直接访问任何元素
deque 从前面或后面快速的插入与删除,直接访问任何元素
list 双链表,从任何地方快速插入与删除
关联容器
set 快速查找,不允许重复值
multiset 快速查找,允许重复值
map 一对多映射,基于关键字快速查找,不允许重复值
multimap 一对多映射,基于关键字快速查找,允许重复值
容器适配器
stack 后进先出
queue 先进先出
priority_queue 最高优先级元素总是第一个出列
codeblocks12.10汉化包
code blocks 汉化插件
1 解压压缩文件 将codeblocks mo文件放到codeblocks根目录下:
CodeBlocks share CodeBlocks locale zh CN
(locale和zh CN没有的话自己新建)
2 重启codeblocks:
"setting environment view internationnal "构选这个选项 下拉框中选中“chinese” ok">code blocks 汉化插件
1 解压压缩文件 将codeblocks mo文件放到codeblocks根目录下:
CodeBlocks share CodeBlocks locale zh CN
(locale和zh CN没有的话自己新建)
2 重启codeblocks:
"setting environment view internationnal "构选这个选项 下拉 [更多]
C_free_中文版
很好用的一个C/C++开发工具,安装是需要加载密匙,只要百度一下就可以.