爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1411|回复: 6
收起左侧

[其它] 代码参考,loquat请进。

[复制链接]
发表于 2012-1-15 12:37:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
本帖最后由 along1976 于 2012-1-15 12:38 编辑

//代码参考,站内短信发不了
int IsBlack(char *szNo)
{

int f,nRet=0;//返回值

int rsize=0,fsize=0;

unsigned int err;

char *buf=0;

char fname[128]="0:\\Misc\\Black.tmo"; // tmo文件名

if ((f=fopen(fname, A_ReadOnly+A_BIN, 0, &err))==-1)

{

return 0;   

}

fsize=lseek(f,0,S_END,&err,&err);

lseek(f,0,S_SET,&err,&err);

if (fsize<=0 || (buf=malloc(fsize+1))==0)

{

fclose(f,&err);

return 0;

}

rsize = fread(f,buf,fsize,&err);

buf[rsize] = 0;

fclose(f, &err);

if(rsize == fsize)

{

char black=0; //黑名单标识

char c,*p=buf, *p2;

char szTemp[31],szInfo[120];

unsigned short wst_b[60];

WSHDR *wst, _wst;

wst=CreateLocalWS(&_wst, wst_b, 60);


GetProvAndCity(wst->wsbody, szNo); //获取省和城市名

ws2gb(wst, szInfo, 0);

p2 =szTemp;

while( *p )

{

c = *p;

if(c == '{') //黑名单开始

black = 1;

if(c > 0x7f)

{

*p2++ = c;

}

if(c == ';') // 分割符

{

*p2 = 0;

if( strstr(szInfo, szTemp) )

{

if( black )

nRet = 1;

else

nRet = -1;

break;

}

else

p2 = szTemp;

}

p++;

}

}

mfree(buf);

buf=0;

return nRet;
}

发表于 2012-1-15 13:33:54 | 显示全部楼层
代码收到,先测试一下。。。
回复 支持 反对

使用道具 举报

发表于 2012-1-15 15:06:44 | 显示全部楼层
本帖最后由 loquat 于 2012-1-15 16:08 编辑

while那部分需要改一改,打算多设置几个接口
怎么结束黑名单和白名单?

int IsBlack(char *szNo)
{
        int f,nRet=0;//返回值
        int rsize=0,fsize=0;
        unsigned int err;
        char *buf=0;
        char fname[128]="0:\\Misc\\Black.tmo"; // tmo文件名
if ((f=fopen(fname, A_ReadOnly+A_BIN, 0, &err))==-1)
{
        return 0;   
}
fsize=lseek(f,0,S_END,&err,&err);
lseek(f,0,S_SET,&err,&err);
if (fsize<=0 || (buf=malloc(fsize+1))==0)
{
        fclose(f,&err);
        return 0;
}
rsize = fread(f,buf,fsize,&err);
buf[rsize] = 0;
fclose(f, &err);
if(rsize == fsize)
{
        char black=0; //黑名单标识
        char c,*p=buf, *p2;
        char szTemp[31],szInfo[120];
        unsigned short wst_b[60];
        WSHDR *wst, _wst;
        wst=CreateLocalWS(&_wst, wst_b, 60);
        GetCalleeNumber(IsCalling(), wst); //获取拨入号码
        GetProvAndCity(wst->wsbody, szNo); //获取省和城市名
        ws2gb(wst, szInfo, 0);
        p2 =szTemp;
        while( *p )
        {
                c = *p;
                if(c == '[')
                black = 1; //黑名单开始
                if(c == '{')
                white = 1; //白名单开始
                if(c > 0x7f)
                {*p2++ = c;}
                if(c == ';') // 分割符
                {
                        *p2 = 0;
                        if( strstr(szInfo, szTemp) )
                        {
                                if( black )
                                nRet = 1;
                                else if( white )
                                nRet = -1;
                                else
                                nRet = 0;
                        break;
                        }
                        else
                        p2 = szTemp;
                }
                        p++;
        }
}
mfree(buf);
buf=0;
return nRet;
}

回复 支持 反对

使用道具 举报

发表于 2012-1-15 15:17:17 | 显示全部楼层
拨入号码在黑名单中,返回1,
拨入号码在白名单中,返回-1
拨入号码不在以上两个列表中,返回0
回复 支持 反对

使用道具 举报

发表于 2012-1-15 15:42:06 | 显示全部楼层
  1.          GetCalleeNumber(IsCalling(), wst); //获取拨入号码
  2.          wst=CreateLocalWS(&_wst, wst_b, 60);
复制代码
这两句要反一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-20 21:24:48 | 显示全部楼层
楼上是冰大吧:)

点评

必须是!  发表于 2012-1-23 17:02
回复 支持 反对

使用道具 举报

发表于 2012-2-4 16:30:44 | 显示全部楼层
你们还能记得住网址?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-4-30 23:12

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表