Linux下用select()实现异步的Echo服务器

本例子使用异步socket(select方法)实现了ECHO服务器程序。
搞了一个晚上,终于弄好了,出现的问题主要如下:

  • 这是最重要的问题!当读取完数据后,需要将数据重新FD_SET进去,特别是serverFd,注意这个testFd意义非常重大,相当于参数传递中的复制行参,需要好好体会。
  • 当read(rd)后,返回为0表示客户端的socket已经关闭,此时除了要FD_CLR,还要关闭fd!!否则fd资源没有被释放,很快就会达到select监听的上限!

[cpp]
/*
* main.c[......]

继续阅读

C++Primer读书笔记-第四章

对应于容器(vector)和迭代器(iterator),C++从C语言继承了数组和指针。
4.1数组
数组时由类型名、标示符和维数组成的符合数据类型。
没有所有元素都是引用的数组。
【数组定义和初始化】
数组的维数必须是大于或者等于1的常量表达式,如果需要计算才能确定,必须使用new或者malloc。
可以在定义的时候将初始化值写在{}中,如下:
int array[5] = {0,1,2}
则,a[0]到a[2]初始化为0、1、2,而后面的a[3]和a[4]为0
对于没有显示初始化的数组[......]

继续阅读