📄 sample.c
字号:
/***** ** ***/#include "sample.h"#define M_EXIT 18#define M_HELP 71#define M_STARTSRV 31#define M_STARTCLI 21#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", "启动连接[S]~ 录入[W] ~开始发送[S]" , "sws", 2, "3", "启动服务[S]~ 录入[W] ~开始接收[R]" , "swr", 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); wsetcolor( w, WHITE, BLUE ); 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"); x = MIN_X +2; y = MIN_Y + 2; width = 20; height = MAX_Y - 4; wsetcolor( w, LT_WHITE, BLACK ); Box( w, height + 1, width + 2, y - 1, x - 2 ); tree = (TREE_CONTROL *)init_treecontrol ( w, y, x, height, width,WHITE, BLUE, 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, NULL, 0, 0, 0) ; switch(ret){ case M_CONNECT_WINDOW: do_tree( tree ); break; case M_STARTSRV: start_server( w ); break; case M_EXIT: retflag = 1; break; case M_HELP: 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);}start_server(w)WINDOW *w;{ SAVESCR *scr; WINDOW *my_win; int x0 = 20, y0 = 2, width=50, height = 10; scr=(SAVESCR *)malloc(sizeof(SAVESCR)); scr = (SAVESCR *) Saverect( w, height, width, y0, x0 ); DrawWindow( w, y0 ,x0, height, width,"TCP服务监听窗口", CYAN ); my_win = subwin( w, height - 4, width -4,y0+2, x0+2 ); wsetcolor( my_win, WHITE, BLACK ); wprintw( my_win, "fjdsa\n\n\n\n\nkfjsadkjfasdkjf\nkfjdaskfjdsakjf\nkfjdsakfj" );/* mvwaddstr( my_win, 0, 0, "fjdsa\n\n\n\n\nkfjsadkjfasdkjf\nkfjdaskfjdsakjf\nkfjdsakfj" ); wprintf( my_win, "thskdfjaksfjsadfkjjfsdakfjasf" );*/ wrefresh(my_win); getch(); wclear( my_win ); Putrect( w, y0, x0, scr ); Free ( scr ); return ;};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -