TELNET_D.C
上传用户:sunrenlu
上传日期:2022-06-13
资源大小:1419k
文件大小:2k
源码类别:

操作系统开发

开发平台:

DOS

  1. #include <dos.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <rtos.h>
  5. #include <telnetd.h>
  6. #include <string.h>
  7. #include <parse.h>
  8. void hightext( char *s )
  9. {
  10.     highvideo();
  11.     cputs( s );
  12.     lowvideo();
  13. }
  14. void telnet_thread( DWORD dummy )
  15. {
  16.     teld_str *t;
  17.     BYTE ch;
  18.     char buf[ 128 ];
  19.     char buf2[ 256 ];
  20.     char *substring;
  21.     int i;
  22.     do {
  23.         hightext( "listenning for a connectionrn");
  24.         t = teld_listen( 0 );
  25.         hightext("connection establishedrn");
  26.         hightext("keys you type will be sent to client, Esc to exitrn");
  27.         teld_puts( t, "WelcomernPress keys to send to serverrnESC moves to next sectionrn");
  28.         do {
  29.             ch = teld_getc( t );
  30.             if ( ch == 255 ) break;
  31.             if ( ch == 27 ) break;  /* ESC */
  32.             if ( ch != 0 ) putch( ch );
  33.             if ( kbhit() ) {
  34.                 ch = getch();
  35.                 /* break on ESC */
  36.                 if ( ch == 27 ) exit( 0 );
  37.                 teld_write( t, &ch, 1 );
  38.             }
  39.         } while ( 1 );
  40.         teld_puts(t, "Enter any old password: ");
  41.         if ( teld_getpassword( t, buf, sizeof( buf ), 0 )) {
  42.             teld_puts( t, "You enterred: ");
  43.             teld_puts( t, buf );
  44.             teld_puts( t, "rn");
  45.         }
  46.         do {
  47.             teld_puts(t,"Now enter a text string or 'quit': ");
  48.             if ( teld_gets(t, buf, sizeof( buf ), 0 )) {
  49.                 teld_puts( t, "rn Got: ");
  50.                 teld_puts( t, buf );
  51.                 teld_puts( t, "rn");
  52.                 /* show how to parse the string */
  53.                 for ( i = 1 ; i < 20 ; ++i ) {
  54.                     if ( ( substring = parse_arg( buf, i )) != NULL ) {
  55.                         sprintf( buf2, " arg %u : %srn", i, substring );
  56.                         teld_puts( t, buf2 );
  57.                         kfree( substring );
  58.                     }
  59.                 }
  60.             } else break;
  61.         } while ( stricmp( buf, "quit"));
  62.         teld_close( t );
  63.         hightext("rnclosed connectionrn");
  64.     } while ( 1 );
  65. }
  66. main()
  67. {
  68.     kdebug = 1;
  69.     rt_init(100);
  70.     sock_init();            /* initialize network */
  71.     cputs("starting...rn");
  72.     rt_newthread( telnet_thread, 0, 4096, 0, "worker" );
  73.     do {
  74.         /* nothing */
  75.         rt_yield();
  76.     } while ( 1 );
  77. }