摘要:
IntroductionPmake is a program designed to simplify themaintenance of other programs. Its input is a list of specifications as to thefiles upon which programs and other files depend. mkdep, a program to constructMakefile dependency lists, is also included.This doc is not to introduce how to usepmake 阅读全文
随笔档案-2011年04月
TCP状态图和常见问题
2011-04-20 09:30 by zhenjing, 17769 阅读, 收藏, 编辑
摘要:
TCP共有9个网路状态,其中涉及到关闭的状态有5个。 在我们编写网络相关程序的时候,这5个状态经常出现。因为这5个状态相互关联,相互纠缠,而且状态变化触发都是由应用触发,但是又涉及操作系统和网络,所以正确的理解TCP 在关闭时网络状态变化情况,为我们诊断网络中各种问题,快速定位故障有着非常重要的作用和意义。 为此,我根据W.Richard Stevens的《TCP/IP详解》一书,将这5个状态制成一个时序图(其实原书也有这个图,但不是很好理解),其中黑色字体来表示应用程序行为,红色字体是操作系统行为。=============================================== 阅读全文
3个学习Socket编程的简单例子:TCP Server/Client, Select
2011-04-20 09:29 by zhenjing, 4499 阅读, 收藏, 编辑
摘要:
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序。如果你能完全理解这3个例子,估计socket编程就已经基本入门了。 建议:1) 多多查查所用到的网络接口; 2) 最好有一本书,如UNIX环境高级编程,UNIX网络编程,可查询;3) 可以直接使用书上的例子更好。 TCP Client代码:#include <sys/stat.h> #include <sys/types.h> #include <sys/socket.h> #include 阅读全文
socket基础知识
2011-04-20 09:28 by zhenjing, 2649 阅读, 收藏, 编辑
摘要:
socket基础知识 概述 socket 是TCP/IP协议的最流行的一种网络编程接口。它与TCP/IP一起最早实现于4.1BSD UNIX 系统中,主要用于传送级(TCP,UDP)编程。 socket往往称为套接口,套接口用于网络中两个通信实体间的通信,两个实体可以存在于同一机器的不同进程中或不同机器的进程中。 套接口就好像UNIX中pipe (管道),通信双方进程通过它来与对方发送或接受数据。如同pipe 用文件描述字表示一样,socket 也用文件描述字表示,也称为套接口描述字,或简称套接字。在网络编程时要用套接字表示通信的对方。但两者不同的是,pipe的通信双方在一台机器上,共用一个p 阅读全文
使用Select的3个注意事项
2011-04-20 09:26 by zhenjing, 562 阅读, 收藏, 编辑
摘要:
#include <sys/select.h> int select(int n, fd_set *readfds, fd_set*writefds, fd_set *exceptfds, struct timeval *timeout);int pselect(int n, fd_set *readfds, fd_set*writefds, fd_set *exceptfds, const struct timespec *timeout, const sigset_t*sigmask);FD_CLR(int fd, fd_set *set);FD_ISSET(int fd, f 阅读全文
RSH的网络通信细节
2011-04-20 09:25 by zhenjing, 1181 阅读, 收藏, 编辑
摘要:
Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 rsh服务侦听514/TCP口,client建立到server的514/TCP的连接。服务端会先检查TCP连接的源端口是否位于[512,1023]区间,否则服务端进程终止。*nix最早要求范围是[1,1023],后来为消除一些安全隐患,改成[512,1023]。但这是实现相关的,并且各个系统的man手册可能与其当前实现不同步,某些版本Solaris的man手册就有问题,应实测。 为什么rshd有这个限制?一般rsh、rcp、rlogin被设置成setuid-to-. 阅读全文
读书笔记--修改代码的艺术
2011-04-20 09:23 by zhenjing, 669 阅读, 收藏, 编辑
摘要:
本书内容关于如何有效处理遗留代码,遗留代码是指没有编写测试的代码。因此,为遗留代码编写测试是改善遗留代码的首要任务。对一个大系统,不可能从头开始编写每一处的单元测试,一般只能从当前需要改动的地方开始,逐步添加单元测试,形成“软件夹钳”,进而修改并改善现有代码。遗留代码修改算法: (1) 确定改动点;(前提:理解代码)(2) 找出测试点;(前提:理清代码间的联系)(3) 解依赖;(解依赖是为类编写单元测试的前提)(4) 编写测试;(编写符合代码当前行为的特征测试)(5) 修改、重构。(在存在测试覆盖的前提下,修正bug、改善设计等)从上述算法可以看出,前4条是关于如何编写测试代码的,而解依赖是编 阅读全文
内存数据的十六进制Print
2011-04-20 09:22 by zhenjing, 4263 阅读, 收藏, 编辑
摘要:
在程序的调试过程中,经常需要输出各种数据,正常情况下使用printf和cout即可实现数据输出。然而在输出二进制数据时,printf和out却有点无能为力。那么如何比较二进制数据是否正确呢?方案一:文件输出。文件可以输入任何数据,但是需要在程序之外比较文件,这对于少量数据并不划算。方案二:实现自定义的十六进制输出函数。当然,也可是八进制,一般而言十六进制更易看懂(习惯)。下面给出一个最近实现的此类函数。该函数可将指定长度任何内存数据以十六进制格式输出。这个程序对32和64位的PC均适用。注意:%x无法正确打印负数,负数总是打印成32bit整型数,64位PC也是如此。#include <s 阅读全文
GCC/G++常见链接错误
2011-04-20 09:21 by zhenjing, 1197 阅读, 收藏, 编辑
摘要:
链接错误的直接表现就是:****符号未定义。几种常见的链接错误如下:缺少*.o文件 ---- 对策:将相应的文件加入Makefile或命令行*.o文件未更新 ---- 对策:删除旧*.o文件重新编译或者依赖于最新的depend来编译(增删文件时确保make depend)。缺少相应的库文件 ---- 对策:将相应的文件加入Makefile或命令行依赖的库文件版本不对或未更新 ---- 对策:重新生成所依赖的库文件库文件的出现顺序不对 ----- 对策:根据库的依赖关系,调整库出现的顺序。原则:只允许先出现的库依赖于后出现的库。其中,第5种错误最难发现。如果发现程序所需的库都已经引入,但仍出现链 阅读全文
[wxWidget系列] wxWidget的事件机制
2011-04-20 09:11 by zhenjing, 2589 阅读, 收藏, 编辑
摘要:
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 wxWidget的事件机制wxWidget通过在编译期生成静态的事件表来实现事件类的事件处理。所有想要使用事件处理机制的地方都需要继承wxEvtHandler类(直接或间接)。由于window控件需要处理自身的UI时间,故wxWidget将实现为exEvtHandler的基类,这就意味着所有的wxWidget的控件均是事件类,可以直接定义事件表。a) 定义事件表的基本步骤:1) 定义一个直接或间接继承自wxEvtHandler的类;2) 定义所需的事件处理函数,函数. 阅读全文
[Boost系列] Boost学习
2011-04-20 09:10 by zhenjing, 3636 阅读, 收藏, 编辑
摘要:
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 Boost 学习 Boost 安装 下载 boost 源代码包,解压,进入 boost 目录,执行 ./configure-> 生成 Makefile-> 执行 make 阅读全文
[wxWidget系列] Updating wxWidget from 2.6.X to 2.8.X
2011-04-20 09:10 by zhenjing, 481 阅读, 收藏, 编辑
摘要:
Compile Error and Solution:1. wxSizer::IsShown -> wxSizer::IsShown must take one argument.2. Int GetCount() const->unsign Int GetCount() const3. wxCommandEvent's members is protected, please use related interfaces to access them.4. wxHIDE_READONLY is not supported by wxFileDialog.5. The ty 阅读全文