📄 sample.c
字号:
/***** ** ***/#include "sample.h"#define M_EXIT 18#define M_HELP 71#define M_CONNECT_WINDOW 61main( argc, argv)int argc;char *argv[];{ int i; int y,x,width,height; SAVESCR *scr; TREE_CONTROL *tree; WINDOW *w; int Max_item; int ret,retflag=0; char s[100]; int Select_tree_move ( ); int Select_tree_keydown ( ); MENU_ITEM menu_bar[]={ 1, "0", "连接[C] ~发送[S] ~接收[R] ~协议[P] ~设置[O] ~窗口[W] ~帮助[H]", "csrpowh", 2, "1", "节点刷新[W] ~连接刷新[B] ~连接节点[C] ~节点信息[M] ~增加节点[A] ~删除节点[D] ~打印[P] ~退出[E] ", "wbcmadpe", 2, "2", "录入[W] ~开始发送[S]" , "ws", 2, "3", "录入[W] ~开始接收[R]" , "wr", 2, "4", "TCP/IP[T]-> ~SPX/IPX[S] ~SNA[I] ~NETBIOS[N]" , "tsin", 3, "41", "TCP ~UDP ~ICMP ~ARP ~RARP " , "", 2, "5", "连接[C] ~无连接[N]" , "cn", 2, "6", "连接窗口[C] ~发送窗口[S] ~接收窗口[R] ~协议窗口[P] ~状态窗口[Z] ~出错窗口[E] " , "csrpze", 2, "7", "帮助[H] ~主题[T] ~关于[A] " , "hta", }; initscr(); noecho(); w = newwin(23,79,0,0); wclear(w); wrefresh(w); wsetcolor( w, WHITE, M_BC ); for (i=MIN_X;i<MAX_X;i++) mvwaddstr( w, MIN_Y, i , " " ); wsetcolor( w, BLACK, WHITE ); for (i=MIN_X;i<MAX_X;i++) mvwaddstr( w, MAX_Y-1, i , " " ); mvwaddstr( w, MAX_Y-1, MIN_X , "END 键弹出菜单 " ); mvwaddstr( w, MAX_Y-1, MAX_X - 33 , "网络管理系统 NETCON V1.0, 1998/11"); tree = (TREE_CONTROL *)init_treecontrol ( w, MIN_Y+2,MIN_X+2,MAX_Y-1-3,MAX_X/2,WHITE, BLACK, RED, CYAN ); tree_add_item( tree, (TREE_ITEM *)NULL,"TCP 网络","",1); Init_host( tree ) ; trigger_tree_move( tree, Select_tree_move ) ; generate_treelist( tree ); if ( tree->num != tree->i ) printf( "初始化出错: num =%d, but i =%d",tree->num,tree->i); show_tree( tree ); Max_item= sizeof(menu_bar)/sizeof(struct menu_item_code); while(1){ ret = Do_menu(w, menu_bar, NULL, Max_item, 0, 0, 0, 0) ; switch(ret){ case M_CONNECT_WINDOW: do_tree( tree ); break; case M_EXIT: retflag = 1; break; case M_HELP: Disp_Help( w, NULL , HELP_Y, HELP_X, HELP_H, HELP_W, "使用指南", 0 ); break; } if ( retflag == 1 ) break; } clear(); refresh(); endwin(w);}Init_host(tree) TREE_CONTROL *tree;{ char s[1024], ipaddr[20], hostname[256], domain[256]; char *p; FILE *fp; ST_IPLINK *clink = NULL; TREE_ITEM *item; if ( (fp=fopen("/etc/hosts", "r" )) == NULL ) { printf( "file /etc/hosts not found!" ); return(-1); } while ( !feof(fp) ) { fgets( s, 256, fp ); for(p=s;(*p==Key_tab||*p==Key_space)&&(*p);p++); if ( *p == '#' ) continue; for(*ipaddr='\0';*p!=Key_space&&*p!=Key_tab&&*p!=Key_nxtrow&& (*p);p++) { sprintf( ipaddr, "%s%c", ipaddr, p[0] ) ; } for(;(*p==Key_tab||*p==Key_space)&&(*p);p++); for(*hostname='\0';*p!=Key_space&&*p!=Key_tab&&*p!=Key_nxtrow&& (*p);p++) { sprintf( hostname, "%s%c", hostname, p[0] ) ; } for(;(*p==Key_tab||*p==Key_space)&&(*p);p++); for(*domain='\0';*p!=Key_space&&*p!=Key_tab&&*p!=Key_nxtrow&& (*p);p++) { sprintf( domain, "%s%c", domain, p[0] ) ; } if ( *ipaddr != '\0' ) { if ( !(item =(TREE_ITEM *)Find_tree_str ( tree , domain ))) { if ( *domain != '\0' ) { tree_add_item( tree, tree->startitem, domain,NULL,1); item = tree->curitem; } else { item = tree->startitem; } } clink = (ST_IPLINK *) malloc(sizeof(ST_IPLINK)); strcpy( clink->ipaddr, ipaddr ) ; strcpy( clink->hostname, hostname ) ; strcpy( clink->domain, domain ) ; clink->connect_bz = FALSE ; tree_add_item( tree, item, hostname,clink,1); } } fclose( fp );}/* ** Move the item of tree ** Show the ipaddr in the help bar***/Select_tree_move ( tree )TREE_CONTROL *tree;{ ST_IPLINK *link = ((ST_IPLINK *)((TREE_ITEM *)Getcuritem(tree))->link); if ( link ) Show_help( tree->win, link->ipaddr ); else Show_help( tree->win, ((TREE_ITEM *)Getcuritem(tree))->text); }Select_tree_keydown ( tree, ch )TREE_CONTROL *tree;int ch;{ char s[10]; sprintf( s, "%d", ch ) ; Show_help( tree->win, s ); return 0 ;}Show_help( WINDOW *win, char *s ){ int i ; wsetcolor( win, BLACK, WHITE ); for (i=MIN_X;i<40;i++) mvwaddstr( win, MAX_Y-1, i , " " ); mvwaddstr( win, MAX_Y-1, MIN_X , s ) ; wrefresh(win);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -