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

操作系统开发

开发平台:

DOS

  1. /*
  2.  * simple UDP server - just read data and write it out to the console
  3.  *
  4.  */
  5. #define LISTEN_PORT 162
  6. /*
  7.  * Copyright (c) 2000 Erick Engelke
  8.  */
  9. #include <stdio.h>
  10. #include <string.h>
  11. #include <memory.h>
  12. #include <rtos.h>
  13. #include <net.h>
  14. #include <ctype.h>
  15. #define BUF_SIZ 2048
  16. void dump(void *ptr, int len )
  17. {
  18.  unsigned char *p = ptr;
  19.  int x, y, xy;
  20.  char ch;
  21.          cprintf("nr%u (0x%04x) bytesnr", len, len );
  22.  for ( y = 0 ; y < len ; y+= 16 ) {
  23.                   cprintf("nr%04x : ", y  );
  24.   for ( x = 0 ; x < 16 ; ++x ) {
  25. xy = x + y;
  26.                                 cprintf( xy < len ? "%02x " : "   ", p[xy] );
  27.   }
  28.                   cprintf(" : ");
  29.   for ( x = 0 ; x < 16 ; ++x ) {
  30. xy = x + y;
  31. ch = p[ xy ];
  32. if ( ! isprint( ch )) ch = '*';
  33.                                 cprintf( xy < len ? "%c" : "  ", ch );
  34.   }
  35.  }
  36.          cprintf("nr");
  37. }
  38. main(int argc, char **argv)
  39. {
  40.     udp_Socket *udp;
  41.     static char buffer[ BUF_SIZ ];
  42.     int len;
  43.     rt_init(100);
  44.     sock_init();
  45.     udp = kcalloc( sizeof( udp_Socket ), 1 );
  46.     if ( udp == NULL )
  47.         rt_halt("out of memory");
  48.     if (!udp_open( udp, 161, 0, 0, NULL ))
  49.             rt_halt("unable to open SNMP server socket");
  50.     while ( 1 ){
  51.         if ( kbhit() ) rt_halt("user halted program");
  52.         rt_sleep( 10 );
  53.         tcp_tick( NULL );
  54.         /* look for input */
  55.         if ( (len = sock_dataready( udp )) != 0 ) {
  56.             sock_fastread( udp, buffer, len );
  57.             dump( buffer, len );
  58.         }
  59.     }
  60. }