⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cioserver.inc

📁 一个采用汇编线程池实现的Socket完成端口编程例程。
💻 INC
字号:

       ;.if [edi].m_hCompPort!=0
       ;   invoke PostQueuedCompletionStatus,[edi].m_hCompPort,0,NULL,NULL
       ;   mov    [edi].m_hCompPort,0
       ;.endif

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;EQU 设置
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    _DEBUG              EQU   1
    ERROR_BUFSIZE       EQU   1024
    DATA_BUFSIZE        EQU   8192
    WSA_FLAG_OVERLAPPED EQU   1
    
    OP_READ             EQU   1
    OP_WRITE            EQU   2
    ;OP_ACCEPT          EQU   3
    SD_BOTH             EQU   02h

;数据缓冲区结构
WSABUF STRUCT
    len       dd                 ?
    buf       dd                 ?
WSABUF ENDS

;数据重叠结构
SOCKETCONTEXT STRUCT
   Overlapped OVERLAPPED         <>    ;覆盖参数
   DataBuf    WSABUF             <>    ;接收缓冲区{缓冲区大小,缓冲区指针}〖指针指向下面的缓冲区〗
   Buffer     db DATA_BUFSIZE dup(?)   ;发送缓冲区
   SendSize   dd                  ?    ;需要发送字节数
   BytesRecv  dd                  ?    ;接收到的字节数
   BytesSend  dd                  ?    ;已经发送字节数
   dwIoFlag   dd                  ?    ;IO标志【读/写】
   hListen    dd                  ?    ;服务器Socket侦听句柄
   hAccept    dd                  ?    ;客户端Socket连接句柄
   hCompPort  dd                  ?    ;关联到的完成端口
   hClass     dd                  ?    ;类句柄
SOCKETCONTEXT ENDS

ifndef _CTEXT_
   _CTEXT_   EQU   1
   CTEXT MACRO y:VARARG 
       LOCAL sym
       
       CONST segment
           IFIDNI <y>,<>
               sym db 0
           ELSE
               sym db y,0
           ENDIF
       CONST ends
       EXITM <OFFSET sym>
   ENDM
   
   ;将M2值赋给M1
   m2m MACRO M1, M2
      push M2
      pop  M1
   ENDM
endif 

    _ServerWorkProc      PROTO  :DWORD

    CLS_IOSKT_Init       PROTO  :DWORD
    IOSKT_Destructor     PROTO  :DWORD 
    IOSKT_SetLastErr     PROTO  :DWORD,:DWORD
    IOSKT_SetWarning     PROTO  :DWORD,:DWORD
    IOSKT_GetLastErr     PROTO  :DWORD
    IOSKT_InitNetWork    PROTO  :DWORD 
    IOSKT_UnInitWinsock2 PROTO  :DWORD
    IOSKT_Start          PROTO  :DWORD,:DWORD,:DWORD
    IOSKT_Stop           PROTO  :DWORD

    CLS_IOSKT_InitPto       TYPEDEF PROTO  :DWORD
    IOSKT_DestructorPto     TYPEDEF PROTO  :DWORD 
    IOSKT_SetLastErrPto     TYPEDEF PROTO  :DWORD,:DWORD
    IOSKT_SetWarningPto     TYPEDEF PROTO  :DWORD,:DWORD
    IOSKT_GetLastErrPto     TYPEDEF PROTO  :DWORD
    IOSKT_InitNetWorkPto    TYPEDEF PROTO :DWORD 
    IOSKT_UnInitNetWorkPto  TYPEDEF PROTO :DWORD
    IOSKT_StartPto          TYPEDEF PROTO :DWORD,:DWORD,:DWORD
    IOSKT_StopPto           TYPEDEF PROTO :DWORD

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -