04 2014 档案
摘要:写在前面的话:功能是基于C/S模型的网络传输实现,要求是服务器端可以在局域网中任何机子上运行,客户端启动后自动寻找服务器端进行连接,之后,服务器端向已经连接的客户端发送命令,客户端根据命令执行相应的操作(即发送某个约定文件夹下的所有文件),并且客户端不需要用户操作。1、思路首先,对于这个功能的实现思...
阅读全文
摘要:1、对语言的基础理解不是太深刻,不能灵活的使用2、是不是给线程传递数据大多需要动态生成啊,因为必须传递地址给它么,如果传递局部变量肯定不对啊,还有就是accept函数中有个需要地址的参数,传递的就是局部变量,为什么可以呢?3、线程函数往往是静态的,但是工具为了实现代码的复用,往往把重复代码抽出来形成...
阅读全文
摘要:转载自: C/C++数组名与指针区别深入探索引言 指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时...
阅读全文
摘要:转载自:再访贺利坚(一):IT毕业生去培训机构,这件事很正常导语:与烟台大学计算机学院贺利坚副教授相识,还是在2012年年底,那个时候我在为社区之星专访栏目寻找合适的采访人。在社区运营的推荐下,我接触到了贺利坚老师,那个时候他正忙于带领他的学生进行互联网教学,并在网络上开设《IT学子成长指导》栏目,...
阅读全文
摘要:转载自:程序员学习能力提升三要素IT技术的发展日新月异,新技术层出不穷,具有良好的学习能力,能及时获取新知识、随时补充和丰富自己,已成为程序员职业发展的核心竞争力。本文中,作者结合多年的学习经验总结出了提高程序员学习能力的三个要点。众所周知,现在是一个知识爆炸的时代,知识更新非常快。据测算,一个大学...
阅读全文
摘要:重点介绍一个MFC中CSocket类的使用1、创建套接字使用CSocket类创建套接字对象是通过该类的构造函数创建的。其原型如下:1 CSocket::CSocket();例如,用户创建CSocket类对象,代码如下:1 CSocket sock;如果用户需要创建套接字对象指针,则应该使用关键字ne...
阅读全文
摘要:Visual C++的MFC提供了CSocket类用来实现网络通信。下面介绍VC++在Windows 95中实现Socket的 CSocket 类相关成员函数(这些成员函数实际上是从CAsyncSocket 类继承来的)的使用。(1) BOOL Create( UINT nSocketPort = ...
阅读全文
摘要:许多时候我们实现网络编程使用的是winsock api函数,虽然这些函数使用起来也很方便,很灵活,但是VC++的MFC类库中提供了CAsyncSocket这样一个套接字类,用它来实现socket编程会更方便。1、服务器端 项目:CSockServerServer端的编程与Client端的类似,下面主...
阅读全文
摘要:WSAAsyncSelect模型是winsock编程模型的一种,它提供了socket异步编程的方便,其实现是基于Windows消息机制的,最主要的就是下面这个函数:1 int PASCAL FAR WSAAsyncSelect (SOCKET s,HWND hWnd,unsigned int wMs...
阅读全文
摘要:1、服务器端代码 1 #pragma comment(lib, "ws2_32.lib") 2 3 #include 4 #include 5 6 using namespace std; 7 8 bool LoadSockLib() 9 {10 WSADATA wsaData;1...
阅读全文
摘要:写在前面的话:虽然这段代码中对于指针的使用是不正确的,但是我却在这个不正确的代码中发现了另一个错误,而且深感迷惑,所以打算将此博文推到首页,请各位帮忙回答个问题。在项目中用到了以下一段代码,执行结果有点奇怪,还没有想明白为什么会这样子是在网络编程中用到的,因为需要根据新加入的用户IP和已经存在的用户列表中的用户IP进行比对,来判定该用户是否已经存在,所以就使用了上述办法,但是执行结果出人意料,因为if(0 == strcmp(newIp, oldIp))这行代码永远为真,为什么呢?自己就跟踪代码调试,结果当执行过第二个红线那一行之后,newIp的值也发生了改变,而且newIp和oldIp指向的
阅读全文
摘要:写在前面的话:在MFC的网络编程中,由于现在项目都是使用UNICODE编码,但是网络API的许多函数却只能接受const char*的参数,所以经常会遇到需要将char*转换为TCHAR*的时候,有一个函数可以实现,但是用起来比较麻烦,所以自己就对它进行了封装,形成自己的函数,记下来,以备后用。函数...
阅读全文
摘要:〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格式错误的程序。〖12〗-访问码无效。〖13〗-数据无效。〖14〗-存储器不足,无法完成此操作。〖15〗-系统找不到指定的驱动器。〖16〗-无法删除目录。〖17〗-系统无法将文件移到不同的驱动器。〖18〗-没有更多文件。〖19〗-介质受写入保护。〖20〗-系统找不到指定的设备。 〖21〗-设备未就绪。 〖2
阅读全文
摘要:C++中类的构造函数的调用有四种形式C++中对象的实例化有四种情况:1、调用默认构造函数。2、隐式调用构造函数3、显示调用构造函数4、使用new操作符如图所示,前三种在对象的作用域之外就会被系统自动销毁,调用析构函数。最后一个必须显示的使用delete来释放内存,但是需要注意的是,delete只是释放了指针指向的内存,但是指针依然指向那个地址,所以释放内存之后应该把指针设为NULL。
阅读全文
摘要:我对C++的一些疑问,最近使用C++,总感觉有些东西自己没有抓住,也可能是自己基础学的不是很扎实,所以对一些基本的东西理解不够透彻导致的。因为自己在学校也学过C#和java,C#它是一个完全的面向对象的语言,所以没有这么麻烦,在C#中除了基本的几种值类型,其他的一切都是对象,都是Object的子类。我的疑问如下:1、在C#中对象声明并不开辟存储空间,直到调用类的构造函数显示的初始化对象,之后才会开辟空间,而在C++中,对象声明之后就会自动调用默认构造函数,这样,是不是已经开辟了存储空间了呢?自己的回答:C++中调用构造函数有几种方式,如 Point p;此时,会自动调用类Point的默认构造函
阅读全文