📄 00000000.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: BloodDreamer (血梦), 信区: Linux <BR>标 题: 写乐一个抓msg的程序(for bbs)! <BR>发信站: BBS 水木清华站 (Sun Jun 13 22:12:35 1999) <BR> <BR> 用于抓收到的和回别人的msg, 花了一整天的时间总算写成乐, <BR>贴出来于大家共享. <BR> <BR>文件名: <BR> catchmsg.cpp <BR>编译: <BR> g++ catchmsg.cpp -o catchmsg <BR>用法是这样的: <BR> telnet bbs.your.host |catchmsg savefile <BR>祝: <BR> 广大的热爱Linux和Unix的GGDD们和JJMM们聊天快乐, <BR>把更多美好回忆留在按ext2格式化的硬盘上和心中. <BR> ----蜀南血梦 <BR>//catchmsg.cpp <BR>//抓取上bbs时和朋友对发的msg:) <BR>//蜀南血梦.最后修改:1999.6.12 加入对msg镶套的支持. <BR>//Email:blood_<A HREF="mailto:dreamer@126.com或BloodDreamer@263.net">dreamer@126.com或BloodDreamer@263.net</A> <BR>//usage: <BR>// telnet bbs.our.host |catchmsg outfile <BR>//bugs: 未对重复的msg加以过滤; <BR>// 抓到的msg按其出现的自然顺序组织; <BR>// ^H和^[[?;?H尚未过滤. <BR>#include<iostream.h> <BR>#include<fstream.h> <BR>#include<ctype.h> <BR>#define MSG_INIT 0 <BR>#define MSG_BEGIN 1 <BR>#define MSG_PAUSE 2 <BR>#define MSG_STOP 3 <BR>#define MSG_RESUME 4 <BR>#define MSG_ESC 5 <BR>#define MSG_GET 6 <BR>#define MSG_ONE 7 <BR>#define MSG_TWO 8 <BR>struct CStateNode{ <BR> int nStart; <BR> int nEnd; <BR> char *pszSteps; <BR> char *pszFullSteps; <BR>}aStateNodes[100]={ <BR> {0,MSG_ESC,"\x1b[",""}, <BR> {MSG_ESC,MSG_GET,"0;1;44;36m","\x1b[0;1;44;36m"}, <BR> {0,MSG_BEGIN,"立即回讯息给","立即回讯息给"}, <BR> {0,MSG_BEGIN,"回讯息给","回讯息给"}, <BR> {MSG_ESC,MSG_ONE,"1",""}, <BR> {MSG_ONE,MSG_PAUSE,";*H",""}, <BR> {MSG_ESC,MSG_TWO,"2",""}, <BR> {MSG_TWO,MSG_RESUME,";","\x1b[2;"}, <BR> {MSG_ESC,MSG_PAUSE,"3;*H",""}, <BR> {MSG_ESC,MSG_PAUSE,"4;*H",""}, <BR> {MSG_ESC,MSG_PAUSE,"5;*H",""}, <BR> {MSG_ESC,MSG_PAUSE,"6;*H",""}, <BR> {MSG_ESC,MSG_PAUSE,"7;*H",""}, <BR> {MSG_ESC,MSG_PAUSE,"8;*H",""}, <BR> {MSG_ESC,MSG_PAUSE,"9;*H",""}, <BR> {MSG_ONE,MSG_PAUSE,"0;*H",""}, <BR> {MSG_ONE,MSG_PAUSE,"1;*H",""}, <BR> {MSG_ONE,MSG_PAUSE,"2;*H",""}, <BR> {MSG_ONE,MSG_PAUSE,"3;*H",""}, <BR> {MSG_ONE,MSG_PAUSE,"4;*H",""}, <BR> {MSG_ONE,MSG_PAUSE,"5;*H",""}, <BR> {MSG_ONE,MSG_PAUSE,"6;*H",""}, <BR> {MSG_ONE,MSG_PAUSE,"7;*H",""}, <BR> {MSG_ONE,MSG_PAUSE,"8;*H",""}, <BR> {MSG_ONE,MSG_PAUSE,"9;*H",""}, <BR> {MSG_TWO,MSG_PAUSE,"0;*H",""}, <BR> {MSG_TWO,MSG_PAUSE,"1;*H",""}, <BR> {MSG_TWO,MSG_PAUSE,"2;*H",""}, <BR> {MSG_TWO,MSG_PAUSE,"3;*H",""}, <BR> {MSG_TWO,MSG_PAUSE,"4;*H",""}, <BR> {MSG_TWO,MSG_PAUSE,"5;*H",""}, <BR> {0,MSG_STOP,"\r","\r\n"}, <BR> {0,0,NULL}}; <BR>int nState=0; <BR>int nCurNode=0; <BR>int nCurPos=0; <BR>int StepOn(char c,const char **pp) <BR>{ <BR> CStateNode *psn=aStateNodes+nCurNode; <BR> if(psn->pszSteps[nCurPos]=='\0'){ <BR> nCurPos=0; <BR> CStateNode *p=aStateNodes; <BR> nCurNode=0; <BR> while(p->pszSteps!=NULL){ <BR> if(p->nStart==nState) <BR> goto ok; <BR> p++; <BR> nCurNode++; <BR> } <BR> nState=nCurNode=0; <BR> } <BR>ok: <BR> int nPass=0; <BR> while(nPass<=1){ <BR> psn=aStateNodes+nCurNode; <BR> while(psn->pszSteps!=NULL){ <BR> if(psn->nStart==nState){ <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -