自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 资源 (2)
  • 收藏
  • 关注

转载 P2P中NAT之间的打洞可能性

我们看看不同NAT之间的NAT打洞。NAT打洞需要Server配合,需要2种Server:1. 类似WebRTC中的信令服务器,作用是帮助客户机沟通IP和PORT信息;2. STUN Server,用来让客户机判断自己所在的NAT环境。现在假设客户端和Server的通讯都没问题,客户端知道自己所处环境,并且将自己的信息通过服务器发送给了另一方客户端,它们可能的打洞情

2017-07-04 09:08:36 444

转载 NAT的四种类型及检测[转]

考虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四种。值得指出的是,对于TCP协议而言,一般来说,目前NAT中针对TCP的实现基本上是一致的,其间并不存在太大差异,这是因为TCP协议本身 便是面向连接的,因此无需考虑网络连接无状态所带来复杂性。用语定义

2017-07-04 09:07:44 449

转载 多播包的发送与接收

Listener Program#include #include #include #include #include #include #include #define HELLO_PORT 12345#define HELLO_GROUP "225.0.0.37"#define MSGBUFSIZE 256main(int argc, char *argv[]){

2015-07-24 11:22:49 1131

原创 Linux中阻塞函数的超时处理

由于gethostbyname是阻塞的,且不可重入的,超时时间过程,人为设置超时时间可用如上方法。

2015-07-17 10:25:13 3134 1

转载 GCC __attribute__((constructor)|(destructor))

在阅读TGTD的代码时发现了一个非常诡异的问题,声明了一个空的全局数组,在使用的时候却发现数组非空,在main()入口时数组已经非空.数组时在什么地方被赋值了呢?最后发现__attribute__这个东东在起作用,类似于全局变量类的构造函数在main()前被调用.__attribute__((constructor))__attribute__((destructor)) #

2014-01-20 22:57:43 1146

原创 C 语言宏定义时紧跟#和##后面的宏不能展开的问题

经常写宏的可能会遇到这种问题,比如下面的例子#NUM 1#TEST(val, type) val##type如果我们调用时写成TEST(aaa, 1)不会有什么问题,但是如果写成TEST(aaa, #NUM) 这时会发现#NUM不能展开,此时的解决方案可以写双层宏来解决,如下:#NUM 1#_Test (val, type) val##type#Test(val, type

2013-06-04 14:38:22 1573

转载 JS 实现页面加载完成判断

方案一:不能带参数,但可以多次调用。(function(){ var ie = !!(window.attachEvent && !window.opera); var wk = /webkit\/(\d+)/i.test(navigator.userAgent) && (RegExp.$1 < 525); var fn = []; var run = function () { f

2013-05-22 15:48:20 1414

转载 编译自己的程序到openwrt固件中去

我想你大概已经熟悉了在openwrt下方便的安装程序了,即opkg install这个命令已经熟悉了。很多时候我们只会找网上的ipk的包下载下来安装,却不知到这个包到底有什么神秘的地方,如何才能将我们自己写的一个程序编译成一个ipkg的包呢,或者将linux平台下的其他软件编译成一个ipkg的包呢?再或者,如何将我们的程序编译进固件的镜像文件中去呢,这篇日志将会给大家一个解答。首先说说ipk包

2013-05-09 20:24:24 12560 1

原创 Linux 信号处理机制中涉及到的相关几个函数解释

理解两个概念:信号阻塞和信号忽略信号阻塞:有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数。这种情况是通过阻塞信号实现的。信号忽略:当进程忽略一个信号时,信号会被传递出去但进程会将信号丢弃。信号处理的相关函数void (*signal(int signum,void(* handler)(int)))(int);

2013-04-19 18:53:05 947

转载 Linux守护进程列表

amd:自动安装NFS(网络文件系统)守侯进程apmd:高级电源治理Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和ip地址对数据库Autofs:自动安装治理进程automount,与NFS相关,依靠于NISBootparamd:引导参数服务器,为LAN上的无盘工作站提供引导所需的相关信息crond:linux下的计划任务Dhcpd:启动一个DHCP(动

2013-04-18 10:58:35 925

转载 Linux 守护进程的原理与实现

一、守护进程概述在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。二、守护进程简介

2013-04-18 10:41:38 6540

转载 Linux 信号列表

我们运行如下命令,可看到Linux支持的信号列表:$ kill -l1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE 9) SIGKILL     10) SIGUSR1     11) SIGSEGV

2013-04-17 11:38:32 834

转载 Linux 获取并分析程序崩溃时的调用堆栈

下面是一个小例子,说明了程序出现段错误时,如何打印程序的堆栈信息。#include#include#include#include static void WidebrightSegvHandler(int signum){ void *array[10]; size_t size; char **strings; size_t i, j; si

2013-04-17 10:47:56 10051

转载 检测非正常断开的TCP连接

此处的”非正常断开”指TCP连接不是以优雅的方式断开,如网线故障等物理链路的原因,还有突然主机断电等原因。有两种方法可以检测:1.TCP连接双方定时发握手消息 2.利用TCP协议栈中的KeepAlive探测。第二种方法简单可靠,只需对TCP连接两个Socket设定KeepAlive探测,所以本文只讲第二种方法在Linux,Window2000下的实现(在其它的平台上没有作进一步的测试)。w

2013-03-27 10:23:32 1913

转载 Socket 单线程多用户并发的两个小例子

#include #include #include #include #include #include #include #include #include #define MYPORT 1234 // the port users will be connecting to#define BACKLOG 5 // how many pend

2013-03-27 10:11:24 5202 1

原创 之前写的SSL的性能测试程序

client.c#include #include #include #include #include #include #include #include #include #include #include #include #define MAXBUF 1024#define MAX_THREADS 100#define SUBTHREADNUM 2i

2013-03-14 11:13:51 2277

转载 Linux CGI 上传程序

#include #include #include #define DEAL_BUF_LEN 1024#define SIGN_CODE_LEN 100#define FILE_NAME_LEN 64#define FILE_SAVE_DIR "/tmp"enum{ STATE_START, STATE_GET_SIGN_CODE, STATE_GET_FILE_N

2013-03-14 10:32:16 1081

转载 Linux tcpdump命令详解

第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host。第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,

2013-03-12 14:29:03 810

转载 Mysql 安装后修改数据库编码方式

set names 'utf8';show variables like 'character%';alter database chifan default character set 'utf8';

2013-01-27 15:34:28 590

转载 页面加载完成后执行JS代码

我们有时候会想实现有个页面onload的效果,用下面的代码,我们不必要在body里加上onload事件了。 var ready = function(fun) { if (document.addEventListener) { document.addEventListener("DOMContentLoaded", fun, false); } else {

2013-01-27 11:13:47 3411

转载 getchar和getch的区别

int getchar(void);功 能: 从stdin流中读字符返回值:读取的字符getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII

2013-01-07 09:38:30 862

转载 随滚动条移动的DIV层

<!-- var i=0, str="";while(i++"} document.write(str); var div = document.getElementsByTagName("div")[0]; var y = parseInt(div.style.top); setInterval(function(){ var cy = parseInt(div.sty

2012-12-15 08:40:38 434

转载 针对各种浏览器css不兼容的写法

针对各种浏览器css不兼容的写法/*针对谷歌浏览器内核支持的CSS样式*/@media screen and (-webkit-min-device-pixel-ratio:0){样式}/*针对IE6特制识别的CSS样式*/*HTML .SearchBox{样式}针对Firefox浏览器的内核CSS写法:@-moz-documen

2012-12-13 21:39:50 542

转载 固定层在浏览器底部

始终漂浮在网页底部body { margin:0px; padding:0px; background:url(notfound) fixed; }.nextpage { background:#000; color:#fff; bottom: 0; margin: 0 auto; position: fixed; height:90px; opacity:0.8; fi

2012-12-13 21:32:51 631

转载 Java实现汉字转拼音

package com.diancan.test;public class Pinyin{ private String[] name = { "zuo", "zun", "zui", "zuan", "zu", "zou", "zong", "zi", "zhuo", "zhun", "zhui", "zhuang", "zhuan", "zhuai", "

2012-12-07 15:04:38 1008

转载 Linux 动态获取CPU利用率

#include #include #include #define ONE_MB (1024 * 1024)int cpu_num;int is_total = 0;struct cpuinfo{ char name[20]; unsigned int user; unsigned int nice; unsigned int system; un

2012-11-30 10:29:28 1372

转载 MySQL中的日期和时间存储

MySQL的五种日期和时间类型  MySQl中有多种表示日期和时间的数据类型。其中YEAR表示年份,DATE表示日期,TIME表示时间,DATETIME和TIMESTAMP表示日期和实践。它们的对比如下:YEAR ,字节数为1,取值范围为“1901——2155”DATE,字节数为4,取值范围为“1000-01-01——9999-12-31”TIME,字节数为3,取值范围为“-838

2012-11-27 09:37:57 25521

原创 基于线程池的OpenSSL编程

服务端#include #include #include #include #include #include #include #include #include #include #include #include SSL_CTX *ctx;int server_sockfd;pthread_mutex_t mutex = PTHREAD_MUTEX_I

2012-11-15 09:14:56 1312

转载 Linux 下简单TCP通信程序

服务端#include #include #include #include #include #include int main(int argc,char *argv[]){ int server_sockfd; int client_sockfd; int server_len, client_len; struct sockaddr_in

2012-11-15 08:57:07 1028

原创 Linux的几个常用小功能

Ethtool是用于查询及设置网卡参数的命令。ethtool ethX //查询ethX网口基本设置ethtool –h //显示ethtool的命令帮助(help)ethtool –i ethX //查询ethX网口的相关信息ethtool –d ethX //查询ethX网口注册性信息ethtool –r ethX //重置ethX网口到自适应模式ethtool –S

2012-11-14 17:54:12 668

转载 Linux errno的使用说明

当linux中的C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是errno是一个数字,代表的具体含义还要到errno.h中去阅读宏定义,而每次查阅是一件很繁琐的事情。有下面几种方法可以方便的得到错误信息。void perror(

2012-10-18 09:07:04 927

转载 Linux 共享库配置 /etc/ld.so.conf

Linux 系统上有两类根本不同的 Linux 可执行程序。第一类是静态链接的可执行程序。静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”。因为这一原因,静态可执行程序不依赖任何外部库就可以运行。第二类是动态链接的可执行程序。静态可执行程序与动态可执行程序比较我们可以用 ldd 命令来确定某一特定可执行程序是否为静态链接的:# ldd /sbin/slnnot a

2012-08-31 11:03:54 1219

转载 C语言操作符优先级

优先级运算符含    义运算对象的个数结合方向1()[]->.圆括号下标运算符指向结构体成员运算符结构体成员运算符 自左至右2!逻辑非运算符1(单目运算符)自右至左~按位取反运算符++自增运算符--自减运算符-负号运算符(类

2012-08-16 11:15:45 856

转载 Linux 中的 /etc/group 和 /etc/passwd 简介

具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件;在本标题下,您还能了解到什么是GID。/etc/group 简介。用户组的特性在系统管理中为系统管理员提供了极大的方便,但安全性也是值得关注的,如某个用户下有对系统管理有最重要的内容

2012-08-16 09:13:19 3905

转载 Linux 下模拟Ping命令的 C 实现

/******************************************************** * IP报头格式数据结构定义在中 * * ICMP数据结构定义在中 * * 套接字地址数据结构定义在中 * ********************************************************/#include #include #inc

2012-08-15 10:59:56 930

转载 Linux Socket 编程小例

tcpserver.c/** * Tcp Server program, It is a simple example only. * when client connect to server, send a welcome message and timestamp in server. */#include #include #include #include #incl

2012-08-15 10:53:49 763

转载 Java 实现的生产者消费者小例

package mypackage;import java.util.*;public class iphxer{ public static void main(String s[]) { System.out.println("开始生产和消费了!"); M m = new M(); m.start(); }}cl

2012-08-10 14:49:44 696

转载 JSP 实现国际化

国际化(Internationalization,又称il8n),是越来越多的应用软件必须面临的问题,Java语言采用Unicode编码,并且提供了强大的类库支持国际化编程。采用Java语言编程,可以方便地实现应用软件界面语言的国际化。国际化编程常用类:使用Java语言进行国际化编程,经常要用到Locale类及ResourceBundl e类,它们都在包java.util中。Locale类

2012-08-10 10:59:57 7455 1

转载 生成一像素表格边框的五种方法

生成一像素表格边框的五种方法<!-- .tableStyle { border-collapse:collapse; } .tableStyle td { border:#ccc solid 1px; }-->方法一、利用CSS样式表控制 一像素表格边框 一像素

2012-08-10 09:51:29 1256

转载 Java 获取当前线程的相关信息

public class iphxer{ @SuppressWarnings("static-access") public static void main (String s[]) { System.out.println("iphxer"); new Thread(new B("iphxer0")).start();

2012-08-10 09:30:10 77252

网页配色原理,网页配色方案,网页配色教材

网页配色原理 网页配色方案 网页配色教材,需要网页配色的朋友不妨看一下

2010-06-21

三维游戏引擎的一个实例程序

一个三维游戏引擎的实例代码,可运行可执行,里面内容丰富,类结构清晰包含md2文件的导入,游戏进度的控制,三维场景的碰撞检测等

2008-09-03

空空如也

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

TA关注的人

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