- 博客(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
530
转载 NAT的四种类型及检测[转]
考虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四种。值得指出的是,对于TCP协议而言,一般来说,目前NAT中针对TCP的实现基本上是一致的,其间并不存在太大差异,这是因为TCP协议本身 便是面向连接的,因此无需考虑网络连接无状态所带来复杂性。用语定义
2017-07-04 09:07:44
519
转载 多播包的发送与接收
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
1200
转载 GCC __attribute__((constructor)|(destructor))
在阅读TGTD的代码时发现了一个非常诡异的问题,声明了一个空的全局数组,在使用的时候却发现数组非空,在main()入口时数组已经非空.数组时在什么地方被赋值了呢?最后发现__attribute__这个东东在起作用,类似于全局变量类的构造函数在main()前被调用.__attribute__((constructor))__attribute__((destructor)) #
2014-01-20 22:57:43
1194
原创 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
1746
转载 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
1472
转载 编译自己的程序到openwrt固件中去
我想你大概已经熟悉了在openwrt下方便的安装程序了,即opkg install这个命令已经熟悉了。很多时候我们只会找网上的ipk的包下载下来安装,却不知到这个包到底有什么神秘的地方,如何才能将我们自己写的一个程序编译成一个ipkg的包呢,或者将linux平台下的其他软件编译成一个ipkg的包呢?再或者,如何将我们的程序编译进固件的镜像文件中去呢,这篇日志将会给大家一个解答。首先说说ipk包
2013-05-09 20:24:24
13469
原创 Linux 信号处理机制中涉及到的相关几个函数解释
理解两个概念:信号阻塞和信号忽略信号阻塞:有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数。这种情况是通过阻塞信号实现的。信号忽略:当进程忽略一个信号时,信号会被传递出去但进程会将信号丢弃。信号处理的相关函数void (*signal(int signum,void(* handler)(int)))(int);
2013-04-19 18:53:05
992
转载 Linux守护进程列表
amd:自动安装NFS(网络文件系统)守侯进程apmd:高级电源治理Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和ip地址对数据库Autofs:自动安装治理进程automount,与NFS相关,依靠于NISBootparamd:引导参数服务器,为LAN上的无盘工作站提供引导所需的相关信息crond:linux下的计划任务Dhcpd:启动一个DHCP(动
2013-04-18 10:58:35
978
转载 Linux 守护进程的原理与实现
一、守护进程概述在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。二、守护进程简介
2013-04-18 10:41:38
6661
转载 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
883
转载 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
10220
转载 检测非正常断开的TCP连接
此处的”非正常断开”指TCP连接不是以优雅的方式断开,如网线故障等物理链路的原因,还有突然主机断电等原因。有两种方法可以检测:1.TCP连接双方定时发握手消息 2.利用TCP协议栈中的KeepAlive探测。第二种方法简单可靠,只需对TCP连接两个Socket设定KeepAlive探测,所以本文只讲第二种方法在Linux,Window2000下的实现(在其它的平台上没有作进一步的测试)。w
2013-03-27 10:23:32
2015
转载 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
5272
原创 之前写的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
2379
转载 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
1152
转载 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
849
转载 Mysql 安装后修改数据库编码方式
set names 'utf8';show variables like 'character%';alter database chifan default character set 'utf8';
2013-01-27 15:34:28
632
转载 页面加载完成后执行JS代码
我们有时候会想实现有个页面onload的效果,用下面的代码,我们不必要在body里加上onload事件了。 var ready = function(fun) { if (document.addEventListener) { document.addEventListener("DOMContentLoaded", fun, false); } else {
2013-01-27 11:13:47
3476
转载 getchar和getch的区别
int getchar(void);功 能: 从stdin流中读字符返回值:读取的字符getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII
2013-01-07 09:38:30
928
转载 随滚动条移动的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
465
转载 针对各种浏览器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
576
转载 固定层在浏览器底部
始终漂浮在网页底部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
664
转载 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
1073
转载 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
1418
转载 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
25657
原创 基于线程池的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
1348
转载 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
1084
原创 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
707
转载 Linux errno的使用说明
当linux中的C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是errno是一个数字,代表的具体含义还要到errno.h中去阅读宏定义,而每次查阅是一件很繁琐的事情。有下面几种方法可以方便的得到错误信息。void perror(
2012-10-18 09:07:04
999
转载 Linux 共享库配置 /etc/ld.so.conf
Linux 系统上有两类根本不同的 Linux 可执行程序。第一类是静态链接的可执行程序。静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”。因为这一原因,静态可执行程序不依赖任何外部库就可以运行。第二类是动态链接的可执行程序。静态可执行程序与动态可执行程序比较我们可以用 ldd 命令来确定某一特定可执行程序是否为静态链接的:# ldd /sbin/slnnot a
2012-08-31 11:03:54
1273
转载 C语言操作符优先级
优先级运算符含 义运算对象的个数结合方向1()[]->.圆括号下标运算符指向结构体成员运算符结构体成员运算符 自左至右2!逻辑非运算符1(单目运算符)自右至左~按位取反运算符++自增运算符--自减运算符-负号运算符(类
2012-08-16 11:15:45
888
转载 Linux 中的 /etc/group 和 /etc/passwd 简介
具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件;在本标题下,您还能了解到什么是GID。/etc/group 简介。用户组的特性在系统管理中为系统管理员提供了极大的方便,但安全性也是值得关注的,如某个用户下有对系统管理有最重要的内容
2012-08-16 09:13:19
3972
转载 Linux 下模拟Ping命令的 C 实现
/******************************************************** * IP报头格式数据结构定义在中 * * ICMP数据结构定义在中 * * 套接字地址数据结构定义在中 * ********************************************************/#include #include #inc
2012-08-15 10:59:56
981
转载 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
805
转载 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
722
转载 JSP 实现国际化
国际化(Internationalization,又称il8n),是越来越多的应用软件必须面临的问题,Java语言采用Unicode编码,并且提供了强大的类库支持国际化编程。采用Java语言编程,可以方便地实现应用软件界面语言的国际化。国际化编程常用类:使用Java语言进行国际化编程,经常要用到Locale类及ResourceBundl e类,它们都在包java.util中。Locale类
2012-08-10 10:59:57
7531
转载 生成一像素表格边框的五种方法
生成一像素表格边框的五种方法<!-- .tableStyle { border-collapse:collapse; } .tableStyle td { border:#ccc solid 1px; }-->方法一、利用CSS样式表控制 一像素表格边框 一像素
2012-08-10 09:51:29
1366
转载 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
77393
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人