初涉socket编程的朋友经常有下面一些疑惑:1. 为什么我发了3次,另一端只收到2次?2. 我每次发送都成功了,为什么对方收到的信息不完整?这些疑惑往往是对send和recv这两个函数理解不准确所致。send和recv都提供了一个长度参数。对于send而言,这是你希望发送的字节数,而对于recv而言,...
1. 原理分析经常有些新C++程序员问:C++的类的成员个数是不是有限制,为什么我加一个变量后程序就死了?或者说:是不是成员变量的顺序很重要,为什么我两个成员变量顺序换一换程序就不行了?凡此种种之怪现象,往往都是内存访问越界所致。何谓内存访问越界,简单的说,你向系统申请了一块内存,在使用这块内存的时候,超出了你申请的范围。例如,你明明...
考虑这样一个问题:我们把2个红色球和2个白色球放进一个黑盒子里,问取出两个球颜色相同得概率是多少。很显然,取出两个球的组合有以下四种:RR, RW,WR,WW,因此同颜色的概率是2/4=0.5按照乘法原理,我们可以分两次取出。第一次,我们取出白色的可能性为1/2,剩下的3个球再取出白色的可能性为1/3,因此,两次都取出...
大家经常听到一个名词叫内存泄漏。到底怎样才会遇到内存泄漏,内存泄漏到底该怎么定位,大家却都很糊涂。实际上我对这个问题也很头疼,下面就是我关于这个问题的一些小看法:1. 什么叫内存泄漏?内存泄漏是指你分配了内存,使用完毕后没有正确释放它。这样这个内存就不能再被使用。例如:void test(){&...
一般而言,如果基类定义了operator new,那么派生类也必须对应定义。考虑下面的两个类char * pAddress;class CBase{public: static void* operator new(size_t size){return pAddress;}; ...
前一阵子,我申请部门内部调动,被其他部门的人面试了一次,面试官让我写一段代码来对一个整形数组排序,我写了下面一段代码#define SWAP(a,b) do {\ a = a +b;\ b = a - b;\  ...
今天下午五点无聊的拿遥控器换台,突然发现甘肃电视台正在有名家坐诊用“五联疗法”治疗大三阳。我听了几分钟,大意如下:黄主任:以前治好大三阳需要2-3个月就已经很快了,没想到技术发展的这么快,现在15天就可以治愈了。......曾主任:我们医院是卫生部....的医院,医生......,护士....
日前,我从我招行帐户向外地汇出一笔钱。两三天以后,对方仍然没有受到钱。由于招行声称最多5天到帐,倒也没有当回事情。但是一周过去后,才发现对方根本没有收到钱。连到招行专业版,发现我的存款记录中多了一条“退转帐汇款本金”,时间是汇款后的第四天。从这个记录中,我注意到招商银行专业版一来没有注明我的钱为什么没汇成功,二来没有把...
对于一个程序员而言,学习一种语言和一种算法是非常容易的(不包括那些上学花很多时间玩,上班说学习没时间的人)。但是,任何程序都可能是有瑕疵的,尤其有过团队协作编程经验的人,对这个感触尤为深刻。在我前面的述及调试的文章里,我侧重于VC集成环境中的一些设置信息和调试所需要的一些基本技巧。但是,仅仅知道这些是不够的。一个成功...
现象
用多线程方法设计socket程序时,你会发现在跨线程使用CAsyncSocket及其派生类时,会出现程序崩溃。所谓跨线程,是指该对象在一个线程中调用Create/AttachHandle/Attach函数,然后在另外一个线程中调用其他成员函数。下面的例子就是一个典型的导致崩溃的过程:
CAsyncSocket S...
++运算符和--运算符最早出现的原因是他是单指令的,因此效率很高,考虑x = x+1和x++前者需要两个mov指令和一个add指令,而后者只需要一个inc指令,在效率至上年代,这是很重要的。但是,现在的软件都很大,一两个指令的优化对程序基本上没有任何意义。而程序的可维护性和可读性则在大...
根据前面一节的说明,服务端套接字应该按照如下顺序建立:
初始化
创建套接字
绑定本地地址
进入侦听状态
处理接受循环
下面首先创建一个例子来演示服务端套接字的实现,并在以后的各节中优化这个设计。
这个设计实现的功能如下:允许客户端(实...
sockutil.cpp#include "stdafx.h"
#include <iostream.h>
#i...
- 访问:46659次
- 积分:440分
- 排名:第23名
- 随笔:44篇
- 评论:578条
随笔分类
随笔归档
个人相册
阅读排行榜
- 内存访问越界 (5047)
- 粘包、丢包及TCP信息收发 (3305)
- 内存泄漏问题分析 (2479)
- 汇款失败也收手续费 - 记我在招商银行的一次失败的维权经历 (1641)
- 最大化、最小化和关闭按钮 (1468)
- 欧几里德算法和扩展欧几里德算法 (1444)
- 基类定义了operator new,派生类有什么需求 (1374)
- Stein算法,另外一个计算最大公约数的方法 (1350)
- 中国余数定理(CRT)及其应用 (1344)
- 句柄和ID (1286)
评论排行榜
- 内存泄漏问题分析 (172)
- 句柄和ID (32)
- 欧几里德算法和扩展欧几里德算法 (26)
- Stein算法,另外一个计算最大公约数的方法 (25)
- 欧拉函数公式 (23)
- 质数初步 (21)
- 最大化、最小化和关闭按钮 (21)
- 超女随感 (17)
- 内存访问越界 (15)
- 汇款失败也收手续费 - 记我在招商银行的一次失败的维权经历 (13)
最新评论
- 粘包、丢包及TCP信息收发
Dennisweri:?
- 粘包、丢包及TCP信息收发
boli:re: 粘包、丢包及TCP信息收发 刀哥. send 涵数在阻塞模式下是发多...
- 粘包、丢包及TCP信息收发
nscby:re: 粘包、丢包及TCP信息收发 理解的TCP数据流的概念就不难弄清除粘包和丢包的概念了. TC...
- 粘包、丢包及TCP信息收发
advice:re: 粘包、丢包及TCP信息收发 好好读读richard的书 完全不懂网络
- 内存访问越界
qq:358524789:re: 内存访问越界 破坏其他变量的内存情况,是变量前的还是后的,要看CPU的大小端模式才能确定!
- 内存访问越界
平凡:re: 内存访问越界 不得不说严谨的编程习惯是多么的重要。谢谢阿荣的讲解。
- 内存访问越界
gaojl0728:re: 内存访问越界 内存越界还跟堆栈的增长方式有关,一般的cpu堆栈都是向下增长的,所以你第二个...
- 内存访问越界
pxd:re: 内存访问越界 谢谢 学习了
- 内存访问越界
大虾米(dxm)的技术博客:re: 内存访问越界 语重心长,VC老程序员啊
- 内存访问越界
fastzhao:re: 内存访问越界 可以用Flags查出内存越界