SOCKSRV.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993-1997  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. //  MODULE:   socksrv.h
  9. //
  10. //  PURPOSE:  Definitions and prototypes for socksrv.c
  11. //
  12. #include <windows.h>
  13. #include <tchar.h>
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. #include <string.h>
  17. #include <stdarg.h>
  18. #include <wsipx.h>
  19. #include "commdef.h"
  20. #define MAXIMUM_NUMBER_OF_CLIENTS   64
  21. #define MAXIMUM_NUMBER_OF_WORKERS   32
  22. #define FILE_SIZE ((1024*1024*8)-CLIENT_OUTBOUND_BUFFER_MAX)
  23. #define SIXTY_FOUR_K    (64*1024)
  24. #define SIXTEEN_K       (16*1024)
  25. DWORD InitialBuffer[SIXTY_FOUR_K/sizeof(DWORD)];
  26. #define NUMBER_OF_WRITES ((FILE_SIZE+CLIENT_OUTBOUND_BUFFER_MAX)/SIXTY_FOUR_K)
  27. #define CLIENT_CONNECTED    0x00000001
  28. #define CLIENT_DONE         0x00000002
  29. typedef struct _PER_CLIENT_DATA {
  30.     SOCKET Socket;
  31.     OVERLAPPED Overlapped;
  32.     CLIENT_IO_BUFFER IoBuffer;
  33.     CHAR OutboundBuffer[CLIENT_OUTBOUND_BUFFER_MAX];
  34.     DWORD Flags;
  35.     HANDLE hEvent;
  36. } PER_CLIENT_DATA, *PPER_CLIENT_DATA;
  37. typedef struct _PER_THREAD_DATA {
  38.     DWORD TotalTransactions;
  39.     DWORD TotalBytesTransferred;
  40. } PER_THREAD_DATA, *PPER_THREAD_DATA;
  41. PER_THREAD_DATA ThreadData[MAXIMUM_NUMBER_OF_WORKERS];
  42. PER_CLIENT_DATA ClientData[MAXIMUM_NUMBER_OF_CLIENTS];
  43. BOOL fVerbose;
  44. BOOL fTcp;
  45. DWORD dwNumberOfClients;
  46. DWORD dwNumberOfWorkers;
  47. DWORD dwConcurrency;
  48. DWORD dwWorkIndex;
  49. SYSTEM_INFO SystemInfo;
  50. HANDLE CompletionPort;
  51. DWORD dwActiveClientCount;
  52. HANDLE hBenchmarkComplete;
  53. HANDLE hBenchmarkStart;
  54. DWORD StartTime;
  55. DWORD EndTime;
  56. HANDLE hFile;
  57. DWORD
  58. WINAPI
  59. Random (
  60.     DWORD nMaxValue
  61.     );
  62. VOID
  63. WINAPI
  64. ShowUsage(
  65.     VOID
  66.     );
  67. VOID
  68. WINAPI
  69. ParseSwitch(
  70.     CHAR chSwitch,
  71.     int *pArgc,
  72.     char **pArgv[]
  73.     );
  74. BOOL
  75. WINAPI
  76. CreateNetConnections(
  77.     VOID
  78.     );
  79. BOOL
  80. WINAPI
  81. CreateWorkers(
  82.     VOID
  83.     );
  84. DWORD
  85. WINAPI
  86. WorkerThread(
  87.     LPVOID WorkContext
  88.     );
  89. VOID
  90. WINAPI
  91. CompleteBenchmark(
  92.     VOID
  93.     );
  94. VOID
  95. WINAPI
  96. SortTheBuffer(
  97.     LPDWORD Destination,
  98.     LPDWORD Source,
  99.     int DwordCount
  100.     );