自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (5)
  • 收藏
  • 关注

原创 套接字究竟是什么?

网络整理:书上说的端口是数据结构和I/O缓存区”是指硬件端口,网络编程里的端口可以理解为应用程序的ID。说得形象点,套接字就类似我们人类的门我们打开门,通过门外面的人可以进来我们推开门,里面的人也可以出去同样,外面的数据可以通过socket把它存储在本地机器的缓冲区里等待本地机器接收本地机器的数据可以通过socket放在缓冲区里等待发送到对方机器上当我们把门给关上时

2012-05-31 21:25:13 6148 2

原创 TCP面向连接中的“连接”究竟是什么,可靠与不可靠

网上搜集的一些答案:连接是对状态的保持,我是这样理解的实际上就是在客户端和服务器端都维护一个变量,这个变量维护现在数据传输的状态,例如传输了哪些数据,下一次需要传输哪些数据,等等,并不是真的我们想象中的真的有什么东西连接着这两端,因为无论对于有连接还是无连接,都有网线连着呢(不包括无线网),所以连接根本就不是是否真的有什么东西把他们连接起来,真实的含义就是我上面说的,两边维护一

2012-05-31 19:59:02 11230

转载 socket中send()和rece()函数详解

1、send函数int send(SOCKET s,const char FAR *buf,int len,int flags);不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程序

2012-05-29 22:58:41 1421

转载 用select检测对方断开tcp连接

使用阻塞式socket发送和接受数据,但是由于没有建立心跳机制,远端服务器在一定时间内(系统设定)没有活动数据,就会断开连接。无奈只能在每次发送数据之前检测对方是否断开连接,当然在发送数据之前检测的目的是保证这次发收数据不会因为对方断开连接而接受数据失败(对方断开连接,发送还是会成功的)。这个方法比较挫~ 使用了select + recv fd_set read_set; st

2012-05-29 17:17:29 9166 2

转载 C语言文件操作函数大全

clearerr(清除文件流的错误旗标)相关函数 feof表头文件 #include 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值   fclose(关闭文件) 相关函数 close,fflush,fopen,setbuf 表头文件 #inclu

2012-05-27 11:58:34 363

转载 C/C++如何获得文件大小

(一) 对文件操作时有时获得文件的大小时必要的.下面是获得其大小小的较简单方法.#include   //C语言头文件#include   //for system();using namespace std;int main(){  int handle;  handle = open("test.txt", 0x0100); //open file for

2012-05-27 10:16:49 655

转载 C++文件操作详解(ifstream、ofstream、fstream)

C++ 通过以下几个类支持文件的输入输出:ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 打开文件(Open a file)对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就

2012-05-27 09:46:59 733

转载 阻塞和非阻塞

阻塞函数在完成其指定的任务以前不允许程序调用另一个函数。例如,程序执行一个读数据的函数调用时,在此函数完成读操作以前将不会执行下一程序语句。当服务器运行到accept语句时,而没有客户连接服务请求到来,服务器就会停止在accept语句上等待连接服务请求的到来。这种情况称为阻塞(blocking)。而非阻塞操作则可以立即完成。比如,如果你希望服务器仅仅注意检查是否有客户在等待连接,有就接受连接,否则

2012-05-27 06:57:45 6525

转载 互斥对象 Mutex 和MFC中的CMutex

互斥(Mutex)是一种用途非常广泛的内核对象。能够保证多个线程对同一共享资源的互斥访问。同临界区有些类似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都不会同时被多个线程所访问。当前占据资源的线程在任务处理完后应将拥有的互斥对象交出,以便其他线程在获得后得以访问资源。与其他几种内核对象不同,互斥对象在操作系统中拥有特殊代码,并由操作系统来管理

2012-05-27 00:10:02 11577

转载 如何结束线程运行

在一些应用程序中,除非用户去结束应用程序的运行,否则其中的子线程会一直处于运行状态。如果应用程序在结束时不主动通知子线程退出,有可能导致主线程结束后,子线程的系统资源得不到释放。如何通知子线程结束运行呢?这需要在程序设计阶段就考虑到,通常可以用事件、消息或全局变量来通知子线程退出运行循环或消息循环。消息通知方式适合用来通知有消息循环的用户界面线程退出,但理论上讲消息机制是不可靠的(消息可能会丢失,

2012-05-26 23:19:29 874

转载 C语言字符串函数大全

程序开头要声明#include  函数名: stpcpy功 能: 拷贝一个字符串到另一个用 法: char *stpcpy(char *destin, char *source);程序例: #include #include  int main(void){ char string[10]; char *str1 = "abcdefghi";  st

2012-05-26 22:33:49 254

转载 Windows运行机理——线程的机制(3)

作者:Rookie.Zhang  来源:博客园  发布时间:2005-06-09 08:54  阅读:740 次  原文链接  [收藏]  当Windows 95进程工作时,不用跟踪进程ID。实际上,大部分相关进程API函数期望一个HANDLE参数,通常称做hProcess。hProcess与某些事情(Win16任务数据库)没有直接的关联,与进程ID不一样,可有多重独特的hProces

2012-05-26 18:55:00 467

转载 目前最经典的关于虚函数的解释整理

自己也曾经被这些东西所困惑过,看见这篇文章写的不错,转载了过来,希望能给同样的迷茫中的人一点线索,仅供参考!(唯一不足之处就是应该把内存示意图贴出来就好多了,有时间我补上)[1]C++ 对象模型基础一个类中可以包含静态数据成员、静态成员函数、非静态成员函数和非静态数据成员以及虚函数。其中,前三者(静态数据成员、静态成员函数、非静态成员函数)都并没有被放到对象的布局中,可以从以下两段代码

2012-05-26 10:24:42 622

原创 gethostbyname用法实例c++

经测试得出如下结论:该函数获取的是有网络连接的网卡地址。如果笔记本电脑有无线网卡和一般网卡的话:当两个网络连接都禁用时,只获取一个地址,且是127.0.0.1当都启用且真的连接上网络时,获取两个网卡的地址。当只用无线能上网,但网口不插网线时,只有无线网卡的地址。当网口插上网线且禁用无线时,只有一般网卡的地址,不论是手动配置还是自动获取都可以正确获取该ip。用法举例:

2012-05-24 16:58:27 6113

转载 c/c++数组与sizeof的基础知识

转自:http://www.cppblog.com/bloodsuck/articles/7575.html 1 、什么是 sizeof   首先看一下 sizeof在 msdn 上的定义:   The sizeof keyword gives the amount of storage, in bytes, associated with a variable

2012-05-24 13:57:57 415

转载 主动对象(ZT)

2009-04-08 16:21 933人阅读 评论(0)收藏 举报原标题:Active Object -An Object Behavioral Pattern for Concurrent Programming源文地址:http://www.cs.wustl.edu/~schmidt/PDF/Act-Obj.pdf译者:cuichaox@gmail.com

2012-05-22 18:22:10 903

转载 UML 的构成

当前我们所使用的UML一般都为UML1.4,最新的UML为2.0      UML有三大基本构造块,包括事物(元素)、关系以及图事物包括:(1)结构事物:类、接口、用例、协作等(2)行为事物:协作、状态机(3)分组事物:包(4)注释事物:注释包关系分为:联系、泛化(相当于继承)、依赖、实现按照UML1.4图总共有九种:用例图:用于描述系统的功能以及操作者

2012-05-22 18:06:50 511

转载 同步与异步

操作系统发展到今天已经十分精巧,线程就是其中一个杰作。操作系统把 CPU 处理时间划分成许多短暂时间片,在时间 T1 执行一个线程的指令,到时间 T2 又执行下一线程的指令,各线程轮流执行,结果好象是所有线程在并肩前进。这样,编程时可以创建多个线程,在同一期间执行,各线程可以“并行”完成不同的任务。      在单线程方式下,计算机是一台严格意义上的冯·诺依曼式机器,一段代码调用另一段代码

2012-05-22 17:45:29 301

转载 消息的同步发送,异步发送以及消息发送的可靠性

最近写的一个通信框架中有两种最基本的消息发送方式:同步发送和异步发送。同步方式:消息的发送方发A送一条消息到接收端B,B收到消息之后需要对消息进行处理,然后发送ACK确认消息回A,A收到B的ACK之后就可以认为这条消息发送成功,并且保证B顺利收到并处理,在A收到ACK之前A将一直处于阻塞等待状态。异步方式:可细分成发送线程和接受线程异步,发送端进程和

2012-05-22 17:40:22 1874

转载 同步方式的消息发送和异步方式的消息发送

通信有两类不同的基本方式: 具有依时性的同步方式以及与时间无关的异步方式。消息传送中间件有许多不同类型, 它们分别都能够支持一类基本方式的消息通信, 有时可以支持两类方式。根据定义, 同步执行的特征为: 在两个通信应用系统之间必须要进行同步, 两个系统必须都在正常运行, 并且会中断客户端的执行流, 转而执行调用。发送程序和接收程序都必须一直做好相互通信的准备。发送程序首先向接收程序发起一个

2012-05-22 17:29:49 936

转载 关于对象之间通信的一点思考

1. 经典的DDD的告诉我们如果一个领域概念是一个跨多个聚合的动作,比如转帐,那么就应该用领域服务来实现这样的业务概念。领域服务的输入和输出参数都是聚合根,领域服务内部按照业务逻辑规定的执行顺序,按照面向过程的方式,逐个调用相关聚合根的相关方法完成整个业务操作。这种方式的优点是:1)清晰的表达和封装了业务逻辑;2)代码清晰,容易理解,代码可读性强;缺点:1)基本的OO思想告诉我们,对象与对象之间应

2012-05-22 17:18:25 620

转载 面向对象设计五大原则

在写设计模式读书笔记之前,我想先总结一下自己对于面向对象设计五大原则的理解,他们分别是:SRP——单一职责原则;OCP——开放封闭原则;LSP——Liskov替换原则;DIP——依赖倒置原则;ISP——接口隔离原则。 1.  单一职责原则 在《敏捷软件开发》中,把“职责”定义为“变化的原因”,也就是说,就一个类而言,应该只有一个引起它变化的原因。 在《UML与模式应用》一书

2012-05-22 09:41:24 562

转载 互斥与同步

互斥和同步是两个紧密相关而又容易混淆的概念:互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源,如“第一类读写者模型”。

2012-05-21 13:29:23 449

转载 两个头文件相互包含的问题

大家知道C++文件一般包含.cpp文件和.h文件,当两个类相互在头文件中包含对方的头文件的时候编译器会报错的。如下例子:class object1 的头文件object1.h#include"object2.h"class object1{.....}class object2 的头文件object2.h#include"object1.h"class obje

2012-05-15 10:38:06 7416

转载 socket 接收线程实现(帖子)

我的服务程序在一个客户端接入以后就开一个接收线程,负责接收它的数据。    在此期间客户机保持和服务器的连接。       实际运行时,发现这个接收线程一运行,cpu利用率达到100%,根本接收不了其他的连接,请问大家怎么处理接收线程的?怎么改善接收线程的性能?          //     接收数据线程如下:    dword   winapi   recvthre

2012-05-14 15:45:40 1646

转载 声明与函数、函数指针

概述    在很多情况下,尤其是读别人所写代码的时候,对 C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。  问题:声明与函数   有一段程序存储在起始地址为 0的一段内存上,如果我们想要调用这段程序,请问该如何去做?   答案   答案是 (*(void

2012-05-14 14:21:10 412

转载 谈函数指针的实际应用

关于函数参数个数不定的详解见连接:http://www.cnblogs.com/VRS_technology/archive/2010/05/10/1732006.html                           开篇之谈    有人曾说:正是指针使得C语言威力无穷!的确,提及指针这个充满玄机的东西,很容易令人想到很多很多。指针是C语言中一个重要的数据类型,指针和数组等复合

2012-05-14 14:15:25 878 1

转载 给应用程序加装“看门狗”

相信大多数的程序员或用户,在Windows中见到类似于下面的亲切而又温馨的提示信息,都不会感到陌生:“XXX执行了非法操作,将被关闭。要终止程序,请单击;要调试程序,请单击。”或者,“是否向Microsoft发送错误报告?,。”如果这个程序运行在无人值守、需要保持连续工作状态的场合,而其中的bug又一时难以排除,就需要采取应急措施,消除或减少程序出错造成的影响。本文讨论解决这个问题的办法。

2012-05-14 13:58:40 476

转载 vc 中的handle句柄

http://hi.baidu.com/zhangqiuxi/blog/item/f8478e31b20f10af5edf0ebd.html前几天和同学讨论到VC中的HANDLE,其实用到是使用就是不是很明白意义。今天找了篇文章一起学习吧。 先来看些权威的片断:...typedef unsigned int HANDLE;#define DECLARE_HANDLE(n

2012-05-14 13:55:50 2580

转载 成员函数调用delete this合法吗

成员函数调用delete this合法吗?只要你小心,一个对象请求自杀(delete this).是可以的。以下是我对“小心”的定义: 你必须100%的确定,this对象是用 new分配的(不是用new[],也不是用定位放置new,也不是一个栈上的局部对象,也不是全局的,也不是另一个对象的成员,而是明白的普通的new)。你必须100%的确定,该成员函数是this对象最后调用的的

2012-05-13 12:01:38 1753

转载 static 与virtual函数

static函数可直接通过类名调用,不一定需要实例化对象,而virtual需要对象实例化好vtable才能被调用,两者不能搞在一起,再学习newdelete的时,在网上搜到了这样的例子,惊汗,一切尽在代码中://new delete运算符是static的,没有this指针#include using namespace std;class B{public:

2012-05-10 15:13:52 879

转载 CreateThread 函数常见错误 cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__st

用VC创建新线程易出的问题error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'解决方案:(1)如果线程要执行的是类的成员函数,则必须用static声明为静态函数   如:   cla

2012-05-10 15:11:28 1085

转载 C++虚函数的显式声明

在C++中如果想要声明一个虚函数。则应该在类成员函数的函数原型前加 virtrue 关键字。那么在子类可以重写该函数。重新声明该函数时。可以加 virtrue关键字。也可以不加。以达到动态绑定的效果。如果该子类又做为一个父类。而该子类没有添加virtrue 关键字。那这样继承的类是否具有多态的效果呢。写一个测试代码测一下。    在C++中如果想要声明一个虚函数。则应该在类成员函数的函数原型前

2012-05-10 14:17:47 928

转载 十道海量数据处理面试题与十个方法大总结

十道海量数据处理面试题与十个方法大总结 (2012-05-10 12:02)标签: 频率 数据 百度 最大的 文章  第一部分、十道海量数据处理面试题  1、海量日志数据,提取出某日访问百度次数最多的那个IP。  此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。

2012-05-10 14:14:06 447

转载 Regsvr32(windows注册/卸载组件)的使用方法详细说明

Regsvr32(windows注册/卸载组件)的使用方法详细说明 Regsvr32是一个Windows系统的内嵌程序,不仅存在于Windows2000 / XP下,同时也能在Windows98中找到它的身影。它的主要功能就是注册或卸载动态链接库文件(DLL)和嵌入式控件(OCX),Regsvr32是一个Windows系统的内嵌程序,不仅存在于Windows2000 / XP下,同

2012-05-10 10:44:41 14928

转载 C#下添加C++动态库

这个网上很多。但是没有能运行起来的。自己经过一周多的摸索进行稍微总结下。首先是C++下的声明:头文件:extern"C" _declspec(dllexport)intAdd(intsm);Cpp文件:int Add(intsm){    intinsx=20;    sm=insx+sm;    returnsm;}

2012-05-09 22:51:27 1853 1

转载 实现服务器端的多线程SOCKET Server C++/VC

想要实现的功能:在服务器端有一个控制台程序(或者Windows服务),与多个客户端程序通讯,其中主线程有一个socket绑定在一个固定端口上,负责监听客户端的Socket信息。每当启动一个客户端程序,客户端发送来一个socket连接请求,server端就新开启一个线程,并在其中创建一个socket与该客户端的socket通讯,直到客户端程序关闭,结束该线程。主线程中的socket在应用程序退出时关

2012-05-08 17:31:47 1822

转载 动态链接库dll,静态链接库lib, 导入库lib

目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态

2012-05-08 13:59:30 333

转载 使用DLL在进程间共享数据

DLL入门浅析(5)——使用DLL在进程间共享数据         在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的,因为所有的进程用的都收同一块地址空间;而在Win32环境中,情况却发生了变化,每个进程都有了它自己的地址空间,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的进程所有。当进程在载入DLL时,操作系统自动把DLL地址映射到该进程的私有空间,也就是

2012-05-08 11:46:17 462

转载 VC导出类得创建和使用 ,有例程

一、DLL的不同类型    使用MFC可以生成两种类型的DLL:MFC扩展DLL和常规DLL。常规DLL有可以分为动态连接和静态连接。Visual C++还可以生成WIN32 DLL,但不是这里讨论的主要对象。1、MFC扩展DLL   每个DLL都有某种类型的接口:变量、指针、函数、客户程序访问的类。它们的作用是让客户程序使用DLL,MFC扩展DLL可以有C++的接口。也就是它可以导出

2012-05-08 10:18:27 549

多线程的网络爬虫源码(C#)

用c#编写的一个简单的网络爬虫,可以下载相关页面到本机

2013-02-27

windows下socket通信模型全面讲解

完整介绍了socket编程的各种模型包括 Winsock基础 原始套接字 select模型 WSAAsyncSelect WSAEventSelect 重叠模型 完成端口模型 I/O模型的问题 套接字选项和I/O控制命令 是全面了解socket编程的好书

2013-02-27

vc编写的打印预览

用vc编写的打印预览,完整工程,可正常运行,

2012-10-22

MFC类库详解

MFC的中文文档,chm格式,用法与MSDN一样,对于英文不太好的朋友是一本比较好的书籍

2012-04-14

云计算入门指南

云计算的入门书籍,讲述了云技术的历史、定义及一些基础技术

2012-04-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除