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

TCP/IP协议栈

开发平台:

DOS

  1. #include <copyright.h>
  2. #include <wattcp.h>
  3. #include <mem.h>
  4. int sock_rbsize( sock_type *s )
  5. {
  6.     switch( _chk_socket( s )) {
  7. #ifdef NOTUSED // S. Lawson - wrong if application supplied buffer
  8. case 1 : return( tcp_MaxBufSize );
  9. case 2 : return( tcp_MaxBufSize );
  10. #else
  11. case 1 : return( s->udp.maxrdatalen );
  12. case 2 : return( s->tcp.maxrdatalen );
  13. #endif
  14.      /* case 0 : */
  15. default: return( 0 );
  16.     }
  17. }
  18. int sock_rbused( sock_type *s )
  19. {
  20.     switch( _chk_socket( s )) {
  21. case 1 : return( s->udp.rdatalen );
  22. case 2 : return( s->tcp.rdatalen );
  23.      /* case 0 : */
  24. default: return( 0 );
  25.     }
  26. }
  27. int sock_rbleft( sock_type *s )
  28. {
  29.     switch( _chk_socket( s )) {
  30. #ifdef NOTUSED // S. Lawson - wrong if application supplied buffer
  31. case 1 : return( tcp_MaxBufSize - s->udp.rdatalen );
  32. case 2 : return( tcp_MaxBufSize - s->tcp.rdatalen );
  33. #else
  34. case 1 : return( s->udp.maxrdatalen - s->udp.rdatalen );
  35. case 2 : return( s->tcp.maxrdatalen - s->tcp.rdatalen );
  36. #endif
  37.      /* case 0 : */
  38. default: return( 0 );
  39.     }
  40. }
  41. int sock_tbsize( sock_type *s )
  42. {
  43.     switch( _chk_socket( s )) {
  44. case 2 : return( tcp_MaxBufSize );
  45. default: return( 0 );
  46.     }
  47. }
  48. int sock_tbused( sock_type *s )
  49. {
  50.     switch( _chk_socket( s )) {
  51. case 2 : return( s->tcp.datalen );
  52. default: return( 0 );
  53.     }
  54. }
  55. int sock_tbleft( sock_type *s )
  56. {
  57.     switch( _chk_socket( s )) {
  58. case 2 : return( tcp_MaxBufSize - s->tcp.datalen );
  59. default: return( 0 );
  60.     }
  61. }
  62. int sock_preread( sock_type *s, byte *dp, int len )
  63. {
  64.     int count;
  65.     if ( (count = s->udp.rdatalen) < 1)    /* 0 : no data, -1 : error */
  66. return( count );
  67.     if ( count > len ) count = len;
  68.     movmem( s->udp.rdata, dp, count );
  69.     return( count );
  70. }