- 博客(11)
- 资源 (2)
- 收藏
- 关注
原创 网络编程(八)非阻塞套接字的连接和select
在处理非阻塞套接字的连接的时候,我们往往会使用select来判断套接字在发起连接之后发生的变化,但是这个过程中linux和windows有些差别,本文将详细分析这两个平台此时的差异性。目标主机端口可达: 当套接字连接目标地址成功之后,select可以检测到这个套接字上的变化:“可写”。这种情况对于linux和windows都是一样的。目标主机不可达: 这种情况下,套接字并没有发生变化,所以select会一直等待直到超时,这种情况对于linux和windows都是一致的。目标端口不可达: 在
2010-07-25 04:17:00 851
原创 网络编程(七) 正确的设置非阻塞套接字
<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 427
原创 Python单件模式
<br />class A: @classmethod def instance(cls): if not hasattr(cls, '_instance'): cls._instance = cls() return cls._instance a = A.instance()
2010-07-20 16:48:00 1219
原创 安全编码(十一)
<br />char* content = (用户输入)<br />fprintf(fp, content);<br />以上的做法异常危险,当用户的输入包含"%s"的时候造成崩溃的概率很大,将一个字符串作为一个format传入fprintf是非常危险的。<br />应该改为:<br />fprintf(fp, "%s", content);
2010-07-17 00:55:00 353
原创 网络编程(六)
开发网络应用请不要少了让你感激地内牛满面的工具:tcpdumpsniffer常用命令:tcpdump -Xnns 2000 ... ... (具体请看man)
2010-07-14 02:26:00 1198
原创 安全编码(十)
<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 692
原创 安全编码(九)
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 278
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人