上一页 1 2 3 4 5 6 7 ··· 9 下一页

struct 构造函数

摘要: 声明一个变量,如果没有赋值就使用(编译器会给其一个对应类型的默认值,但这不是赋值),那么就会出错,通常情况下编译器可以帮助发现问题(使用未赋值的变量编译通不过)。构造函数是用来初始化类、结构成员变量的。除了要初始化声明的成员变量,还需要考虑初始化的时机。如下面这个:public struct MyDataCode{ string m_name; int m_age; public MyData(string name ,int age,bool flag) { if (flag) { proccess(); } ... 阅读全文
posted @ 2012-03-06 17:05 s7vens 阅读(361) 评论(0) 推荐(0) 编辑

#pragma pack

摘要: pack 为 struct, union 和 class 等的成员对齐指定字节边界. 与编译选项的 /Zp 开关不同, 它不针对整个项目, 而仅针对模块, 比如一个编译单元.1. #pragma pack(show) 以警告信息的形式显示当前字节对齐的值.2. #pragma pack(n) 将当前字节对齐值设为 n .3. #pragma pack() 将当前字节对齐值设为默认值(通常是8) .4. #pragma pack(push) 将当前字节对齐值压入编译栈栈顶.5. #pragma pack(pop) 将编译栈栈顶的字节对齐值弹出并设为当前值.6. #pragma pack(push 阅读全文
posted @ 2012-03-06 16:51 s7vens 阅读(1560) 评论(0) 推荐(0) 编辑

UNP Chapter 21 - 带外数据

摘要: 21.1. 概述许多传输层有带外数据(out-of-band data)的概念,有时也称为加速数据(expedited data).21.2. TCP带外数据TCP没有真正的带外数据,而是提供了一个我们要讨论的紧急模式(urgent mode)。假设一个进程已向一个TCP套接口写入了N字节数据,并且这些数据被TCP放入套接口发送缓冲区等待发送给对方。我们在图21.1中展示了这种状态,并且标记了从1到N的数据字节。进程现在使用send函数和MSG_OOB标志发送一个包含ASCII字符a的带外数据字节:send(fd, "a", 1, MSG_OOB);TCP将数据放置在套机口 阅读全文
posted @ 2012-02-29 09:29 s7vens 阅读(1305) 评论(0) 推荐(0) 编辑

UNP Chapter 20 - 高级UDP套接口编程

摘要: 20.1. 概述本章是各种影响应用程序使用UDP套接口话题的一个集合。首先是确定UDP数据报的目的地址以及是从哪个接口接收数据报的,因为一个绑定UDP端口和通配地址的套接口能在任何接口上接收单播、广播和多播数据报。TCP是一个字节流协议,它使用一个滑动窗口,它没有像记录边界或者允许发送者用数据淹没接收者等事情需要考虑。然而对于UDP,每个输入操作对应一个UDP数据报,所以当接收的数据报比应用进程的输入缓冲区大时,就产生了如何处理的问题。UDP是不可靠的,但对一些应用程序来说使用UDP而不用TCP是有意义的如果实现不支持IP_RECVDSTADDR套接口选项,那么一个确定UDP数据报目的IP地址 阅读全文
posted @ 2012-02-24 09:14 s7vens 阅读(2277) 评论(0) 推荐(0) 编辑

UNP Chapter 19 - 多播

摘要: 19.1 概述单播地址标识单个接口,广播地址标识子网上的所有接口,多播地址标识一组接口。单播和广播是编制方案的两个极端(要么一个要么全部),多播的目的就在于提供一种折衷方案。多播数据报仅由对该数据报感兴趣的接口接收,也就是说,由运行希望参加多播会话应用系统的主机上的接口接收。广播一般局限于局域网,而多播既可用于局域网,也可跨越广域网。19.2. 多播地址IPv4多播地址和IPv6多播地址IPv4中的D类地址(从224.0.0.0到239.255.255.255)是多播地址。D类地址的低28位构成了多播组ID(group ID),而整个32位地址则称为组地址(group address)。下面是 阅读全文
posted @ 2012-02-20 15:42 s7vens 阅读(1696) 评论(0) 推荐(0) 编辑

UNP Chapter 18 - 广播

摘要: 18.1. 概述广播的用途之一是将定服务器主机在本地子网上,但不知到它的单播IP地址时,对它进行定位,这就是资源发现(resouce discovery)。另一用途是当有多个客户和单个服务器通信时,减少局域网上数据流量。实际例子有: ARP(地址解析协议, Address Resolution Protocol),BOOTP(引导协议,Bootstrap Protocol),NTP(网络时间协议,Network)。18.2 广播地址如果用{netid, subnetid, hostid}( {网络ID,子网ID,主机ID})表示IPv4地址。那么有四种类型的广播地址,我们用-1表示所有比特位均 阅读全文
posted @ 2012-02-17 16:27 s7vens 阅读(542) 评论(0) 推荐(0) 编辑

UNP Chapter 17 - 路由套接口

摘要: 17.1. 概述在路由器接口中支持三种类型的操作1. 进程能通过写路由套接口向内核发消息。2. 进程能在路由套接口上从内核读消息,这是核心通知进程已收到一个ICMP重定向消息并进行了处理的方式。3. 进程可以用sysctl函数得到路由表或列出所有已配置的接口。17.2. 数据链路套接口地址结构在路由套接口上返回的一些消息中包含数据链路套接口地址结构,他在<net/if_dl.h>定义struct sockaddr_dl { uint8_t sdl_len; sa_family_t sdl_family; /* AF_LINK */ uint16_t sdl_index; /* .. 阅读全文
posted @ 2012-02-16 10:00 s7vens 阅读(1698) 评论(1) 推荐(0) 编辑

UNP Chapter 16 - ioctl操作

摘要: 16.1. 概述在传统上ioctl函数是用于那些普遍使用,但不适合归入其他类别的任何特性的系统接口。网络程序中ioctl常用于在程序启动时获得主机上所有接口的信息:接口的地址,接口是否支持广播,是否支持多播,等等。16.2. ioctl函数这个函数影响由fd参数指向的打开的文件#include<unistd.h>int ioctl(int fd, int request, ... /* void * arg */); // 返回: 成功返回0,出错返回-1第三个参数总是一个指针,但指针的类型依赖于request(请求)我们可以把和网络有关的请求分为6类:1. 套接口操作2. 文件操 阅读全文
posted @ 2012-02-14 15:31 s7vens 阅读(938) 评论(0) 推荐(0) 编辑

UNP Chapter 15 - 非阻塞I/O

摘要: 15.1 概述缺省状态下,套接口是阻塞方式的。这意味着当一个套接口调用不能立即完成时,进程进入睡眠状态,等待操作完成。我们将可能阻塞的套接口调用分成四种。1. 输入操作: read, readv, recv, recvfrom和recvmsg函数。2. 输出操作: write, writev, send, sendto和sendmsg函数。3. 接收外来连接: accept函数4. 初始化外出的连接: 用于TCP的connect函数15.2. 非阻塞读和写: str_cli函数(Revisited)非阻塞并且直接使用read和write以代替标准I/O我们维护两个缓冲区: to容纳从标准输入到 阅读全文
posted @ 2012-02-07 16:49 s7vens 阅读(793) 评论(0) 推荐(0) 编辑

UNP Chapter 14 - Unix域协议

摘要: 14.1. 概述Unix域协议并不是一个实际的协议族,它只是在同一台主机上进行客户-服务器通信时,使用与在不同主机上的客户和服务器间通信时相同的API(套接口或XTI)的一种方法。当客户和服务器在同一台主机上时,Unix域协议是IPC通信方式的一种替代品。Unix域提供了两种类型的套接口:字节流套接口(与TCP类似)和数据报套接口(与UDP类似)。14.2. Unix域套接口地址结构// 在《sys/un.h>头文件中定义的Unix域套接口地址结构struct sockaddr_un{ uint8_t sun_len; sa_family_t sun_family; /* AF_LOCA 阅读全文
posted @ 2012-02-06 17:06 s7vens 阅读(910) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 9 下一页