Так как я с Украины прога на украинском. Прога чат. http://slil.ru/24717952 сдесь исходники Так вот у меня проблема. Когда человек коннект к другому то писать он может А второй нет(выдает ошибку) Прога на асме Поправте плз.. кто может Ошибка скорее всего в "connect.asm"(а где ей исчо быть?) Надеюсь на ачат ---------------------- одна голова хорошо - а ачат лучше
Итак... Code: invoke WSAAsyncSelect, hSocket2, hWnd,WM_SOCKET, FD_ACCEPT+FD_READ А FD_CLOSE кто будет обрабатывать? Вот где сама проблема: Code: FD_ACCEPT:... invoke accept,hSocket2,0,0 mov hClient,eax Не хватает после этого добавить: Code: invoke WSAAsyncSelect, eax, hWnd,WM_SOCKET, FD_ACCEPT+FD_READ+FD_CLOSE для обработки событий от клиентского сокета. Ещё здесь исправить: Code: FD_READ:... invoke recv, [u]hClient[/u], addr BytRecu, 1024,0 ..... invoke lstrlen, addr BytRecu ..... Зачем получать количество полученных байт через lstrlen, если после вызова функции recv, количество полученных байт будет в eax? Но это не главное... Проблема в дескрипторе сокета, из которого ты пытаешься читать. Надо читать не из hClient, т.к. дескриптор сокета хранится в wParam (передаётся с сообщением WM_SOCKET). Вот так правильно: Code: invoke recv, wParam, addr BytRecu, 1024,0 С FD_CLOSE тоже самое... Надо так: Code: invoke closesocket, wParam P.S. Тебе надо ещё доделать сам чат. P.P.S. Полезная ссылка по теме