2014年2月22日

摘要: 前言 在TCP通信中要使用到几个非常经典的函数( 点这里参考一个关于它们作用的形象比方 ),本文将对这几个函数进行一个简短的使用说明。socket函数 函数作用:创建一个网际字节流套接字 包含头文件:sys/socket.h ( 后面几个函数也一样 ) 函数原型:int socket ( int family, int type, int protocol ) 参数说明: family:指明协议族( 如AF_INET,AF_INET6,AF_LOCAL等 ) type:指明套接字类型( 如SOCK_STREAM,SOCK_DGRAM等 ) protocol:直接指明... 阅读全文
posted @ 2014-02-22 10:57 空山悟 阅读(2071) 评论(0) 推荐(0) 编辑
摘要: 前言 在网络编程中,用户给出的IP参数往往是字符串格式的( 我们也称它为表达格式 )。然而,请看通用套接字地址结构定义: 1 struct in_addr { 2 in_addr_t s_addr; // 存放IP地址的整型变量 3 }; 4 5 struct sockaddr_in { 6 uint8_t sin_len; 7 sa_family_t sin_familt; 8 in_port_t sin_port; 9 10 struct in_addr sin_addr; // 存放IP地址的结构11 12 char sin_zero[... 阅读全文
posted @ 2014-02-22 09:21 空山悟 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 前言 我们知道,数据在主机内的存放有两种模式,也就是说,主机字节序有两种:大端和小端( 这里假定读者已经清楚这个问题 )。但在网络通信中,要求通信数据( 通信数据这里指IP号和端口号 )的使用必须用网络字节序。什么又是网络字节序?网络字节序可以理解为主机字节序的大端模式。如果你的主机字节序原本就是... 阅读全文
posted @ 2014-02-22 09:17 空山悟 阅读(1181) 评论(0) 推荐(0) 编辑
摘要: 前言 本文通过一对经典的时间获取客户/服务器程序,展现了Linux网络编程的大体框架,为以后更深入的学习打下基础。客户服务器模式网络编程的大体框架客户端代码 1 #include 2 // 下头文件包含socket(), bind()等套接字通信必须的函数。 3 #include 4 // 下... 阅读全文
posted @ 2014-02-22 09:10 空山悟 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 前言 为何TCP ”四次分手“ 的过程中会有一个TIME_WAIT状态?这个状态有什么意义呢?这是网络中的一个经典问题,本文将给出精简的回答。什么是TIME_WAIT状态 这是TCP通信协议中出现的一个状态,端点会在这个状态停留2MSL( 最长分节生命期 ),参见下图: 左下方的那个状态即是。... 阅读全文
posted @ 2014-02-22 09:02 空山悟 阅读(571) 评论(0) 推荐(0) 编辑

2014年2月21日

摘要: 前言 编程是对现实世界的模拟,网络通信自然也是对现实世界通信的模拟。可以将网络通信中使用的各种API和对现实世界中的各种通信设备进行通讯的操作进行对比以加深理解。对比 socket() 函数 vs 申请一台电话机 bind() 函数 vs 获取并声明自己的电话号码 listen() 函数 vs 打开响铃 connect() 函数 vs 呼叫对方( 需输入对方电话号码 ) accept() 函数 vs 接电话( 会收到呼叫方的电话号码 )说明 对于accept() 函数,它只有在建立连接之后才会返回呼叫方的“电话号码”。而现实中,不论是否决定建立通话都会返回对方... 阅读全文
posted @ 2014-02-21 11:27 空山悟 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件第二步:下载本书示例源码包 可在这里下载http://ishare.iask.sina.com.cn/f/13238521.html第三步:解压下载到的包并放在用户主目录中第四步:进入包内并执行以下命令1 sudo chmod u+x configure2 ./configure 第五步:进入包内lib子目录下执行make命令1 make第六步:进入包内libfree子目录下执行make命令1 make第七步:进入包内libgai子目录下执行make命令1 make第八步:执行以下命令,将前面生成... 阅读全文
posted @ 2014-02-21 08:52 空山悟 阅读(247) 评论(0) 推荐(0) 编辑

2014年2月20日

摘要: 前言 封装性,继承性,多态性是面向对象语言的三大特性。其中封装,继承好理解,而多态的概念让许多初学者感到困惑。本文将讲述C++中多态的概念以及多态的实现机制。什么是多态? 多态就是多种形态,就是许多情况下可以互换地使用基类型和派生类型的多种形态。多态的实现 依赖于动态绑定机制动态绑定机制相关 ... 阅读全文
posted @ 2014-02-20 09:55 空山悟 阅读(2259) 评论(0) 推荐(0) 编辑
摘要: 前言 学习C++标准算法时,我们知道带有_if的算法都带有一个谓词函数。此前我们直接使用函数名充当谓词函数,这样做有很大的局限性( 下文会做分析 )。为此本文将介绍C++中一个新的技术:函数对象。用它来充当谓词函数就能解决这个问题。什么是函数对象? 函数对象就是重载了函数调用操作符的对象。我们知... 阅读全文
posted @ 2014-02-20 09:50 空山悟 阅读(571) 评论(0) 推荐(0) 编辑
摘要: 前言 有书这么说过,C++设计的最大目的在于允许程序员定义自己的类型,并使它们用起来跟内置类型一样容易和直观。就目前看来,要实现这一点,最核心的莫过于操作符的重载。科学的重载可以让类的使用最大程度地接近内置类型。本文将讨论类操作符重载涉及到的一些原则和具体做法。实现类操作符重载的两种思路 1. ... 阅读全文
posted @ 2014-02-20 09:46 空山悟 阅读(347) 评论(0) 推荐(0) 编辑

导航