FASM - Winsock, проблема переподключения - PullRequest
1 голос
/ 27 января 2012

Я изучаю ассемблер и пытаюсь написать простое приложение 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

Все нормально, когда я запускаю этот клиент, когда серверное приложение не запускается, но когда я делаю то же самое, когда оно запускается, или закрываю серверное приложение и запускаю его снова, я получаю тихую странную проблему: Он начинает переподключаться много раз, и в какой-то момент это «успешно», но я не могу ничего посылать из серверного приложения клиенту и наоборот.

...