資源簡介
本程序實現了linux環境下的udp打洞功能,通過udp打洞實現P2P通信。

代碼片段和文件信息
/*************************************************************************
>?File?Name:?my_debug.c
>?Author:?chad
>?Mail:?linczone@163.com?
?************************************************************************/
#include?
#include?
//#define?_XOPEN_SOURCE?/*?glibc2?needs?this?*/
//在makefile文件添加-D_GNU_SOURCE?-D__USE_XOPEN即可
#include?
#include?
#include?
#include?
#include?
#include?
#include?“my_debug.h“
/*????
????global?variants
?*/
?
//int?debuglevels?=?DEBUG_LEVEL_NONE;
int?__my_allow_debug_levels[MY_SECTION_END];
extern?int?errno;
//延時useconds?微秒
int?my_usleep(int?usec?)
{
????if(?usec?1?||?usec?>?999999?)?
????????return?-1;
????struct?timespec?delay;
????struct?timespec?rem;
????memset(?&delay?0?sizeof(delay));
????memset(?&rem?0?sizeof(rem));
????delay.tv_nsec?=?usec*1000;
????do{
????????if(?!nanosleep(?&delay?&rem?))
????????{
????????????break;?
????????}
????????if(?errno?==?EINTR?)?{
????????????printf(“my_usleep:rem.tv_sec=%ld\n“(int?long)rem.tv_sec);
????????????printf(“my_usleep:rem.tv_nsec=%ld\n“rem.tv_nsec);
????????????delay.tv_sec?=?rem.tv_sec;
????????????delay.tv_nsec?=?rem.tv_nsec;
????????}?else?{
????????????break;
????????}
????}while(1);
????
????return?0;
}
//延時n秒
int?my_sleep(?int?sec?)
{
????if(?sec?1?||?sec?>?999999999?)?
????????return?-1;
????struct?timespec?delay;
????struct?timespec?rem;
????memset(?&delay?0?sizeof(delay));
????memset(?&rem?0?sizeof(rem));
????delay.tv_sec?=?sec;
????do{
????????if(?!nanosleep(?&delay?&rem?)?)
????????{
????????????break;?
????????}
????????if(?errno?==?EINTR?)?{
????????????printf(“my_sleep:rem.tv_sec=%ld\n“(int?long)rem.tv_sec);
????????????printf(“my_sleep:rem.tv_nsec=%ld\n“rem.tv_nsec);
????????????delay.tv_sec?=?rem.tv_sec;
????????????delay.tv_nsec?=?rem.tv_nsec;
????????}?else?{
????????????break;
????????}
????}while(1);
????
????return?0;
}
//得到本地時間
void?get_time(?SYSTEM_TIME?*tm?)
{
????struct?tm?tm_t;
????time_t?tt;
????tt?=?time(?NULL?);
????localtime_r(?&tt?&tm_t?);
????tm->year?=?tm_t.tm_year?+?1900?-?2000;
????tm->month?=?tm_t.tm_mon?+?1;
????tm->week?=?tm_t.tm_wday;//day?of?week
????tm->day?=?tm_t.tm_mday;
????tm->hour?=?tm_t.tm_hour;
????tm->minute?=?tm_t.tm_min;
????tm->second?=?tm_t.tm_sec;
}
int?mystrtime(?char?*timebuf?char*?formt?)
{
????struct?tm?tm_t;
????time_t?t_time;
????t_time?=?time(?NULL?);
????localtime_r(&t_time?&tm_t);
????strftime(timebuf?100?formt??&tm_t?);
????
????return?0;
}
/*
????標準輸出重定向
????如果檢測到/tiandao/stdout.txt文件存在,則將標準輸出重定向該該文件
????如果檢測到該文件不存在則再重定向回標準輸出
????該函數為非線程安全函數
*/
int?out_redirect(?const?char?*path_name?)
{
????static?int?filefg?=0;
????static?int?oldstdout;
????FILE?*fpout;
????if(?!path_name?||?!path_name[0]?)
????????return?-1;
????//測試文件是否存在
????if(?access(?path_name??F_OK|W_OK?)?0?)?{
????????if(?filefg?)?{//如果文件已經打開
????????????filefg?=?0;
????????????dup2(?oldstdout1);
????????????close(oldstdo
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-05-27?14:15??p2p-test\
?????目錄???????????0??2015-05-27?14:11??p2p-test\.deps\
?????文件????????2981??2015-04-21?10:10??p2p-test\.deps\my_debug.Po
?????文件????????2718??2015-04-21?10:10??p2p-test\.deps\read_cmd.Po
?????文件????????4452??2015-04-21?10:10??p2p-test\.deps\udp_client.Po
?????文件????????3648??2015-04-21?10:10??p2p-test\.deps\udp_server.Po
?????文件?????????173??2015-04-18?11:37??p2p-test\ARM_MAKEFILE
?????文件???????19921??2015-04-17?16:36??p2p-test\Makefile
?????文件?????????164??2015-04-17?16:35??p2p-test\Makefile.am
?????文件???????20203??2015-04-17?16:35??p2p-test\Makefile.in
?????文件???????34611??2015-04-17?16:35??p2p-test\aclocal.m4
?????文件???????34420??2015-04-18?11:15??p2p-test\arm_udp_linux
?????目錄???????????0??2015-05-27?14:11??p2p-test\autom4te.cache\
?????文件??????165732??2015-04-17?16:35??p2p-test\autom4te.cache\output.0
?????文件??????165732??2015-04-17?16:35??p2p-test\autom4te.cache\output.1
?????文件????????6218??2015-04-17?16:35??p2p-test\autom4te.cache\requests
?????文件???????33495??2015-04-17?16:35??p2p-test\autom4te.cache\traces.0
?????文件???????26375??2015-04-17?16:35??p2p-test\autom4te.cache\traces.1
?????文件????????2841??2015-04-17?16:36??p2p-test\config.h
?????文件????????2606??2015-04-17?16:38??p2p-test\config.h.in
?????文件???????16081??2015-04-17?16:38??p2p-test\config.log
?????文件???????33152??2015-04-17?16:36??p2p-test\config.status
?????文件??????165073??2015-04-17?16:35??p2p-test\configure
?????文件?????????799??2015-04-17?16:35??p2p-test\configure.in
?????文件??????????32??2015-04-17?16:35??p2p-test\depcomp
?????文件???????????0??2015-04-17?16:35??p2p-test\install-sh
?????文件???????????0??2015-04-17?16:35??p2p-test\missing
?????文件????????7116??2015-05-27?14:14??p2p-test\my_debug.c
?????文件????????5802??2015-05-27?14:14??p2p-test\my_debug.h
?????文件???????17768??2015-04-21?10:10??p2p-test\my_debug.o
?????文件????????2706??2015-05-27?14:14??p2p-test\read_cmd.c
............此處省略10個文件信息
評論
共有 條評論