1

我正在学习汇编并尝试以教育方式编写一个简单的 WinSock 应用程序。尽管大多数情况下一切正常,但我在尝试重新连接时遇到了问题;

start: 
invoke WSAStartup,200,wsadata
invoke socket,AF_INET,SOCK_STREAM,0
mov [hSock],eax
invoke htons, PORTCONST
mov [sadr.sin_port], ax
mov [sadr.sin_family], AF_INET
invoke  inet_addr, IP
mov [sadr.sin_addr], eax
Connectl:
invoke connect,[hSock], sadr, 16
cmp eax, 0
je Recievel
invoke Sleep, 1000
jmp Connectl
Recievel:
invoke recv, [hSock], spacket, 131, 0
cmp eax, 0
jng Clsl
{Some non-related code}
jmp Recievel
Clsl:
mov [spacket.command],0
invoke CloseSocket, [hSock]
invoke WSACleanUp
invoke Sleep, 4000
jmp start

当我在服务器应用程序未运行时运行此客户端时一切正常,但是当我在运行时执行相同操作或关闭服务器应用程序并再次运行它时,我遇到了一个安静的奇怪问题:它开始重新连接很多次,并且在某个时间点它“成功”,但我无法从服务器应用程序向客户端发送任何内容,反之亦然。

4

0 回答 0