Проблема в том, программа работает нормально, сообщение при соединении выводит, но когда invoke Sleep, 10000 истекает, она рушится. Никак не могу понять от чего, вроде всё правмильно закрывается. спасибо. Код (Text): .486 .model flat,stdcall option casemap:none include c:\masm32\include\windows.inc include c:\masm32\include\user32.inc include c:\masm32\include\kernel32.inc include c:\masm32\include\wsock32.inc include c:\masm32\include\comctl32.inc includelib c:\masm32\lib\user32.lib includelib c:\masm32\lib\kernel32.lib includelib c:\masm32\lib\comctl32.lib ; подключение библиотеки common controls includelib c:\masm32\lib\wsock32.lib .data wsaError db "CONNECTED!",0 NProg db "CONNECTED!",0 Hello db "CONNECTED!",0 CommandLine dd ? hSocket2 dd ? hClient dd ? Connected db 0 client dd ? sock dd ? Port dd 3030 wsa WSADATA <?>; структура данных для сети...cм. windows.inc sin sockaddr_in <?> ; -.-.- .const ; ######################################################################### ; опpеделяем дополнительное Windows-сообщение (любой номер от WM_USER и выше) WM_SOCKET equ WM_USER + 100 AF_INET equ 2 ; интернет (используется чаще всего) SOCK_STREAM equ 1 ; ######################################################################### .code ; макрос - обнуляет старшее слово в DWORD (eax), оставляя младшее... LOWORD MACRO bigword mov eax, bigword and eax, 0FFFFh ENDM ; макрос - сдвигает старшее слово в DWORD (eax) в младшие разряды (ax)... HIWORD MACRO bigword mov eax, bigword shr eax, 16 ENDM start: invoke WSAStartup, 101h, addr wsa ; инициализация WINSOCK DLL v1.1 .if eax == NULL ; если успешно invoke GetCommandLine ; получить адрес командной строки - не используется mov CommandLine, eax ; .endif invoke socket, AF_INET, SOCK_STREAM,0 ; тип протокола (не устанавливать никакого пpотокола: 0) .if eax != INVALID_SOCKET ; если нет ошибки mov hSocket2, eax ; запомнить хендл .else invoke MessageBox, NULL, addr wsaError, addr NProg, MB_OK + MB_ICONSTOP .endif invoke htons, Port mov sin.sin_port, ax mov sin.sin_family, AF_INET mov sin.sin_addr, INADDR_ANY invoke bind, hSocket2, addr sin, sizeof sin .if eax == SOCKET_ERROR invoke MessageBox, NULL, addr wsaError, addr NProg, MB_OK + MB_ICONSTOP .endif invoke listen, hSocket2, 5 .if eax == SOCKET_ERROR invoke MessageBox, NULL, addr wsaError, addr NProg, MB_OK + MB_ICONSTOP .endif .while Connected != 1 .IF ax == NULL ; При соединении инициализируем сокет и отправим клиенту строку invoke accept,hSocket2,0,0 mov client,eax invoke send,client,addr Hello,sizeof Hello,0 invoke Sleep,10 mov Connected, 1 .ENDIF .endw invoke MessageBox, NULL, addr wsaError, addr NProg, MB_OK + MB_ICONSTOP; invoke Sleep, 10000 invoke closesocket, hSocket2 invoke WSACleanup end start
а слона-то я и не приметил =) Правда тут сразу встаёт другой вопрос ужасающий.. А почему проги другие какие я писал без exitprocess не рушились?