帮忙看看这个错误

zhulei1978 2019-05-13 05:17:17
.386
.model flat,stdcall
option casemap:none

include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include wsock32.inc
includelib wsock32.lib

DLG_MAIN equ 2000
IDC_COUNT equ 2001
TCP_PORT equ 9999

.data?
hWinMain dd ?
hListenSocked dd ?
dwThreadCounter dd ?
dwFlag dd ?
F_STOP equ 0001h

.const
szErrBind db "无法绑定到TCP端口9999,请检查是否有其他程序在使用:",0

.code
_ServiceThread proc _hSocket
local @stFdSet:fd_set,@stTimeval:timeval
local @szBuffer[512]:byte

inc dwThreadCounter
invoke SetDlgItemInt,hWinMain,\
IDC_COUNT,dwThreadCounter,FALSE
.while !(dwFlag&F_STOP)
mov @stFdSet.fd_count,1
push _hSocket
pop @stFdSet.fd_array
mov @stTimeval.tv_usec,200*1000
mov @stTimeval.tv_sec,0
invoke select,0,addr @stFdSet,\
NULL,NULL,addr @stTimeval
.break .if eax==SOCKET_ERRER
.if eax
invoke recv,_hSocket,addr @szBuffer,\
sizeof @szBuffer,0
.break .if eax==SOCKET_ERROR
.break .if !eax
invoke send,_hSocket,addr @szBuffer,eax,0
.break .if eax==SOCKET_ERROR
.endif
.endw
invoke closesocket,_hSocket
dec dwThreadCounter
invoke SetDlgItemInt,hWinMain,IDC_COUNT,dwThreadCounter,FALSE
ret
_ServiceThread endp

_ListenThread proc _lParam
local @stSin:sockaddr_in

invoke socket,AF_INET,SOCK_STREAM,0
mov hListenSocket,eax

invoke RtlZeroMemory,addr @stSin,sizeof @stSin
invoke htons,TCP_PORT
mov @stSin.sin_port,ax
mov @stSin.sin_family,AF_INET
mov @stSin.sin_addr,INADDR_ANY
invoke bind,hListenSocket,addr @stSin,sizeof @stSin ***********************************************
.if eax
invoke MessageBox,hWinMain,addr szErrBind,\
NULL,MB_OK or MB_ICONSTOP
invoke ExitPorcess,NULL
ret
.endif

invoke listen,hListenSocket,5
.while TRUE
invoke accept,hListenSocket,NULL,0
.break .if eax==INVALID_SOCKET
push ecx
invoke CreateThread,NULL,0,\
offset _ServiceThread,eax,NULL,esp
pop ecx
invoke CloseHandle,eax
.endw
invoke clsesocket,hListenSocket
ret

_ListenThread endp

_ProcDlgMain proc uses ebx edi esi hend,wMsg,wParam,lParam
local @stWsa:WSADATA

mov eax,wMsg
.if eax==WM_INITDIALOG
push hWnd
pop hWinMain
invoke WSAStartup,101h,addr @stWsa
push ecx
invoke CreateThread,NULL,0,\
OFFSET _ListenThread,0,NULL,esp
pop ecx
invoke CloseHandle,eax
.elseif eax==WM_CLOSE
invoke closesocket,hListenSocket
or dwFlag,F_STOP
.while dwThreadCounter
.endw
invoke WSACleanup
invoke EndDialog,hWinMain,NULL

.else
move eax,FLASE
ret
.endif
mov eax,TRUE
ret

_ProcDlgMain endp

start:
invoke GetModuleHandle,NULL
invoke DialogBoxParam,eax,DLG_MAIN,\
NULL,offset _ProcDlgMain,0
invoke ExitProcess,NULL

end start

我正在学习罗云彬的windows环境下32位汇编语言程序设计,编译出现错误
D:\Win32汇编\无标题1.ASM(70) : error A2006: undefined symbol : hListenSocket
标记的那里

大家看看应该如何修改。
...全文
120 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhulei1978 2019-05-14
  • 打赏
  • 举报
回复
谢谢,是拼写错误
zara 2019-05-13
  • 打赏
  • 举报
回复
全是拼写错误啊,好多的。比如提及的这个定义时写的是 hListenSocked
这样的问题,到提示的行是看看,再到定义的地方看看,比较比较就知道问题在哪里了。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧