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

📄 016.txt

📁 会变语言实现的一些程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:

include   windows.inc

include   user32.inc

includelib    user32.lib

include   kernel32.inc

includelib    kernel32.lib

include   wsock32.inc

includelib    wsock32.lib

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; equ 数据

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

DLG_MAIN     equ   2000

IDC_SERVER    equ   2001

IDC_CONNECT   equ   2002

IDC_INFO     equ   2003

IDC_TEXT     equ   2004

WM_SOCKET equ   WM_USER + 100

TCP_PORT     equ   9999

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 数据段

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    .data?

hWinMain     dd    ?

hSocket   dd    ?

hWinConnect   dd    ?

hWinOK     dd    ?

hWinText     dd    ?

hWinServer    dd    ?

hWinInfo     dd    ?

szReadBuffer     db    32768 dup (?)

        .const

szIP       db    ~127.0.0.1~,0

szConnect db   ~连接(&C)~,0

szDisConnect   db   ~断开(&D)~,0

szErrIP db   ~无效的服务器IP地址!~,0

szErrSocket db   ~创建Socket错误!~,0

szErrConnect   db   ~无法连接到服务器!~,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 代码段

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    .code

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 建立 TCP/IP 连接

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_Connect     proc

    local @szBuffer[256]:byte

    local @stSin:sockaddr_in

;********************************************************************

; 转换IP地址并建立socket

;********************************************************************

    invoke  RtlZeroMemory,addr @stSin,sizeof @stSin

    invoke  GetDlgItemText,hWinMain,IDC_SERVER,\

    addr @szBuffer,sizeof @szBuffer

    invoke  inet_addr,addr @szBuffer

    .if   eax ==  INADDR_NONE

    mov   ebx,offset szErrIP

    jmp   _Error

    .endif

    mov   @stSin.sin_addr,eax

    mov   @stSin.sin_family,AF_INET

    invoke  htons,TCP_PORT

    mov   @stSin.sin_port,ax

 

    invoke  socket,AF_INET,SOCK_STREAM,0

    .if   eax ==  INVALID_SOCKET

    mov   ebx,offset szErrSocket

    jmp   _Error

    .endif

    mov   hSocket,eax

;********************************************************************

; 连接到服务器

;********************************************************************

    invoke  EnableWindow,hWinConnect,FALSE

    invoke  EnableWindow,hWinServer,FALSE

    invoke  WSAAsyncSelect,hSocket,hWinMain,WM_SOCKET,\

        FD_CONNECT or FD_READ or FD_CLOSE or FD_WRITE

    invoke  connect,hSocket,addr @stSin,sizeof @stSin

      .if   eax ==  SOCKET_ERROR

    invoke  WSAGetLastError

    .if eax != WSAEWOULDBLOCK

    call     _DisConnect

        mov   ebx,offset szErrConnect

    jmp _Error

    .endif

    .endif

    ret

_Error:

    invoke  MessageBox,hWinMain,ebx,NULL,\

    MB_OK or MB_ICONWARNING

    ret

 

_Connect     endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 断开连接

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_DisConnect   proc

 

    invoke  closesocket,hSocket

      mov   hSocket,0

    invoke  SetWindowText,hWinConnect,addr szConnect

    invoke  EnableWindow,hWinServer,TRUE

        invoke  EnableWindow,hWinConnect,TRUE

    invoke  EnableWindow,hWinText,FALSE

      invoke  EnableWindow,hWinOK,FALSE

    ret

 

_DisConnect   endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 接收TCP数据包

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_RecvData   proc     _hSocket

 

      invoke  RtlZeroMemory,addr szReadBuffer,sizeof szReadBuffer

    invoke  recv,_hSocket,addr szReadBuffer,\

    sizeof szReadBuffer,NULL

    .if   eax !=  SOCKET_ERROR

    invoke  GetWindowTextLength,hWinInfo

    invoke  SendMessage,hWinInfo,EM_SETSEL,eax,eax

    invoke  SendMessage,hWinInfo,EM_REPLACESEL,\

        FALSE,addr szReadBuffer

    .endif

    ret

 

_RecvData   endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 发送输入的文字

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

⌨️ 快捷键说明

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