摘要: 最近在复习C基础知识,发现自己挺怕字符的,出的花样太多了,而我正是这方面欠缺,写其他程序的时候也很少专一用到,看《C语言程序设计》发现还是大师的书好啊,很后悔自己怎么没有早早的细细品味那本书。看到EOF有点搞不明白,里面写了个小程序,怎么都到跳不出while((c=getchar())!=EOF)的循环,getchar返回是int型,EOF是-1,可是输入了所有我能想到的字符,就是挑不出去,最后只好求助于网络。看到一篇博客不错,链接为:http://hi.baidu.com/wanwanwan2008/blog/item/1e6a4915485c6914972b43f0.html为了自己记忆, 阅读全文
posted @ 2012-08-28 21:34 always on the way 阅读(3861) 评论(0) 推荐(0) 编辑
摘要: 1、OSI基础知识和划分7层的优势OSI(open system Interconnection开放系统互连)称为开放式系统互连模型,把网络从逻辑上分为7层,每层都有相关、相对应的设备。建立7层模型的目的是:为了解决异种网络互连时遇到的兼容性问题,帮助各种不同的主机实现数据传输。将服务、接口和协议明确的区分开来:服务是某一层为上一层提供什么功能;接口是上一层如何使用下层提供的服务;协议是如何实现本层的功能。这样网络各层之间有相互独立性,网络各实体采用什么样的协议没有相关性,只要向上提供相同的服务并且不改变相邻的接口就可以了。网络的7层使不同的功能模块(层次)担负不同的职责,好处有:(1)降低网 阅读全文
posted @ 2012-08-11 14:57 always on the way 阅读(312) 评论(0) 推荐(0) 编辑
摘要: C++自动提供的成员函数有:默认构造函数,复制构造函数,默认析构函数,赋值操作符,地址操作符即this指针,这五种函数如果用户没有定义,则系统会自动创建一个。复制构造函数:用一个对象复制一个新的对象时被调用,声明为:类名(类名&对象名);下面这段话很清楚的说明了很多概念,需要细细体会,故粘了下来: 把参数传递给函数有三种方法,一种是值传递,一种是传地址,还有一种是传引用。前者与后两者不同的地方在于:当使用值传递的时候,会在函数里面生成传递参数的一个副本,这个副本的内容是按位从原始参数那里复制过来的,两者的内容是相同的。当原始参数是一个类的对象时,它也会产生一个对象的副本,不过在这里要注 阅读全文
posted @ 2012-08-05 11:24 always on the way 阅读(2092) 评论(0) 推荐(2) 编辑
摘要: 前言:1,extern可以置于变量声明前; 2,extern也可以置于函数声明前; 通过这种行为它告诉编译器:该变量/函数的定义已经存在在某个地方了,让编译器到其他的模块去寻找它的定义。 3, extern “C” 使用extern“C”主要是因为C++语言在编译的时候为了实现多态,会将函数名和函数结合起来形成另外一种函数名(总之就是说编译后的函数名与你之前自己声明时的函数名会不一样),而C语言中无多态的概念当然也就不会有这种奇异的名字变化问题。这是问题就出现了,当你要在C++中调用C函数时,由于名字的不同,所以它会找不到所调用的这个函数的定义,因而会出错。 为了解决这一C与C++的矛盾冲突, 阅读全文
posted @ 2012-08-02 21:52 always on the way 阅读(2371) 评论(0) 推荐(0) 编辑
摘要: 七月分要过去了,这一个月没有照顾好自己的博客,也没照顾自己的学习,每天实习回到学校,感觉脑子里面一天可用的细胞全部用在了实习的地方,空白的脑子看东西的效率低的可怜,看我的博客就可以知道我这个月干了什么,只有那个TCP/UDP通信的程序,并且到目前还没有学彻底。本来不打算在这里唠叨自己的生活,只想在这里激励自己学习,今天忽然想起了这个好朋友,为7月做个结尾。只能说本来有很多我可以利用起来的时间,我没能充分利用。ns2好久不碰了,vc一直在用,但自己学习上的进展却很少。本来想的这个月把socket给搞定,下个月开始做vc的题库,现在只好两者一起进行了,并且我还得给自己多添加一项:英语。许久不看英语 阅读全文
posted @ 2012-07-31 22:14 always on the way 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 前提包含<WinSock2.h>文件,项目的编译链接库包含动态库ws2_32.lib,与其他库之间以空格分开,每个项目都要设置。运行时,先运行服务器端程序,再运行客户端程序。1、(1)TCP服务器程序#include <Winsock2.h>#include <stdio.h>void main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, & 阅读全文
posted @ 2012-07-09 21:42 always on the way 阅读(302) 评论(0) 推荐(0) 编辑
摘要: IP数据包的头信息格式: +-------------------------------------------------+ | 版本 (4位) | +-------------------------------------------------+ | 首部长度(4位) | +-------------------------------------------------+ | 服务类型(TOS)8位 | +------------------------------------... 阅读全文
posted @ 2012-06-08 16:52 always on the way 阅读(10081) 评论(0) 推荐(0) 编辑
摘要: CRC是通信领域中用于校验数据传输正确性的最常用机制,也是Hash算法的一个典型应用,Hash一般翻译为“散列”,也可直接音译为“哈希”,就是把任意长度的输入(又叫做预映射,pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值的空间通常远小于输入空间,不同的输入可能会散列成相同的输出,而不可能从散列值唯一的确定输入值。关于CRC校验:(16位二进制数),CRC码由发送设备计算,放置于所发送信息帧的尾部。接收信息的设备重新计算所接收信息(除RCR部分)的CRC,比较计算得到的CRC是否与接收到的CRC相符,如果两者不相符,则认为数据传输出错 阅读全文
posted @ 2012-06-07 15:45 always on the way 阅读(8625) 评论(0) 推荐(0) 编辑
摘要: 1、十六进制转十进制实现将以字符串形式存放的十六进制数转换为一个十进制数,程序见下面int hextodec(char *hex,int n){ unsigned dec=0; int i=n-1; //输入数组[0]为高位 if(hex==NULL || n<=0 || n>8) //输入十六进制最长为8字节(不包含'\0'字符) { printf("the parameter is invalid\n"); return -1; } while(i>=0) { if(hex[i]>='0'&&hex 阅读全文
posted @ 2012-06-06 19:04 always on the way 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 头文件<stdio.h>定义了用于输入和输出的函数、类型和宏。最重要的类型是用于声明文件指针的FILE。另外两个常用的类型是size_t和fpos_t,size_t是由运算符sizeof产生的无符号整类型;fpos_t类型定义能够唯一说明文件中的每个位置的对象。由头部定义的最有用的宏是EOF,其值代表文件的结尾。1、文件操作(1) fopenFILE *fopen(const char *filename, const char *mode);返回:成功为FILE指针,失败为NULL打开以filename所指内容为名字的文件,返回与之关联的流。mode决定打开的方式,可选值如下:& 阅读全文
posted @ 2012-06-02 18:29 always on the way 阅读(949) 评论(0) 推荐(0) 编辑