自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

13:07

小流跬步

  • 博客(11)
  • 资源 (2)
  • 收藏
  • 关注

原创 网络编程(八)非阻塞套接字的连接和select

在处理非阻塞套接字的连接的时候,我们往往会使用select来判断套接字在发起连接之后发生的变化,但是这个过程中linux和windows有些差别,本文将详细分析这两个平台此时的差异性。目标主机端口可达:    当套接字连接目标地址成功之后,select可以检测到这个套接字上的变化:“可写”。这种情况对于linux和windows都是一样的。目标主机不可达:    这种情况下,套接字并没有发生变化,所以select会一直等待直到超时,这种情况对于linux和windows都是一致的。目标端口不可达:    在

2010-07-25 04:17:00 834

原创 linux 终端backspace不能删除字符

<br />解决方法: <br />输入指令stty erase ^h

2010-07-24 11:18:00 1895 1

原创 网络编程(七) 正确的设置非阻塞套接字

<br />我之前都是用以下方法来将套接字设置为非阻塞状态:<br />fcntl(fd, F_SETFL, O_NONBLOCK);<br />其实上面这种做法只对了一半,因为这操作可能就将fd绑定的其他标志位清除,最理想的做法是:<br />int flags = fcntl(fd, F_GETFL);<br />fcntl(fd, F_SETFL, O_NONBLOCK | flags);

2010-07-20 17:22:00 410

原创 Python单件模式

<br />class A: @classmethod def instance(cls): if not hasattr(cls, '_instance'): cls._instance = cls() return cls._instancea = A.instance() 

2010-07-20 16:48:00 1207

原创 语句摘录(六)

<br />队列中的平均物件数等于进入速率和平均保存时间的乘积。<br />                                                                              --Little定律 Peter Denning

2010-07-18 20:53:00 203

原创 语句摘录(五)

<br />过早的优化是万恶之源<br />                                         -Donald Knuth

2010-07-18 20:48:00 221

原创 语句摘录(四)

<br />错误不应该被静静地略过,除非有意为之。<br />                                                            --Tim Peters

2010-07-18 20:45:00 305

原创 安全编码(十一)

<br />char* content = (用户输入)<br />fprintf(fp, content);<br />以上的做法异常危险,当用户的输入包含"%s"的时候造成崩溃的概率很大,将一个字符串作为一个format传入fprintf是非常危险的。<br />应该改为:<br />fprintf(fp, "%s", content);

2010-07-17 00:55:00 342

原创 网络编程(六)

开发网络应用请不要少了让你感激地内牛满面的工具:tcpdumpsniffer常用命令:tcpdump -Xnns 2000 ... ... (具体请看man)

2010-07-14 02:26:00 1191

原创 安全编码(十)

<br />如果你需要实现一个函数void foo(const char* in, char* out),处理的结果需要放到out中,请问你有足够的自信保证不会造成out的<br />溢出吗?如果没有,请写成:void foo(const char* in, char* out, unsigned int out_size),并在实现的时候处处留意。

2010-07-14 02:20:00 679

原创 安全编码(九)

A* a = GetA();if (NULL == a) { a = GenA();}a->doSomething(); 上面的代码有个很大的问题是第一个"A* a"中a和第二个"A* a"的a是不一样的,假设GenA返回的是NULL,那个"a->doSomething()"会造成崩溃现象。

2010-07-10 15:39:00 266

C\C++中调用Lua函数的接口封装

调用Lua的接口的时候需要执行进栈和出栈等重复性工作,这几个文件的目的是打造一个简单易用的接口,让C\C++更方便地使用Lua的函数

2009-08-16

通用p2p仿真系统ptpsim

一个通用的且已使用的全分布式结构化p2p网络协议的仿真平台,可以在上面定制自己的P2P协议进行研究

2008-10-01

空空如也

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

TA关注的人

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