Доброго времени суток! Код (Text): ... local sin :sockaddr_in ... invoke socket, AF_INET, SOCK_STREAM, IPPROTO_IP cmp eax, INVALID_SOCKET je Ex mov client, eax invoke WSAAsyncSelect, client, hWnd, WM_SOCKET, FD_CONNECT or FD_READ or FD_CLOSE cmp eax, SOCKET_ERROR je Error mov sin.sin_family, AF_INET mov eax, port xchg al, ah mov sin.sin_port, ax invoke inet_addr, ip_addres mov sin.sin_addr, eax invoke connect, client, addr sin, sizeof sin cmp eax, SOCKET_ERROR je Error jmp Ex Error: invoke WSAGetLastError ... Ex: При попытке подключиться connect возвращает ошибку. WSAGetLastError возвращает 10035 - WSAEWOULDBLOCK. В справочнике написано, что это не фатальная ошибка, просто операция не может быть выполнена немедленно, но соединение устанавливается. При отправке данных от клиента сервер сервер нормально их обрабатывает, а при отправке данных от сервера процедура окна клиента не получает сообщение WM_SOCKET. Перерыл кучу примеров и ничего не нашел. В нете об этом либо молчат, либо предлагают использовать WSAEventSelect. Помогите, пожалуста, решить эту проблему с исползованием WSAAsyncSelect.
WSAAsyncSelect переводит сокет в неблокирующий режим, ошибка WSAEWOULDBLOCK и должна появлятся. потому делай так Код (Text): invoke WSAAsyncSelect, client, hWnd, WM_SOCKET, FD_CONNECT or FD_READ or FD_CLOSE invoke WSAGetLastError cmp eax, WSAEWOULDBLOCK jne Error А вообще лучше не привязывать сокет к окну. Используй WSAEventSelect, такая схема будет работать во всех win32 приложениях P.S. Код (Text): mov eax, port xchg al, ah mov sin.sin_port, ax а почему htons не юзаешь?
ptech FD_CONNECT - соединение установлено. FD_READ - сокет готов к чтению (есть данные в буфере) FD_CLOSE - сокет закрывается FD_WRITE - сокет готов к загрузке в буфер для отправки (в зависимости от размера буфера, он может переполнится) И каких событий ожидаем ? События, типа идёт отправка, нет, а вот о событии - данные отправлены можно судить по FD_WRITE
2Corleone >а почему htons не юзаешь? Результат один и тот же. P.S.:Если не сложно, кинь рабочий пример с использованием WSAEventSelect. 2SteelRat >И каких событий ожидаем ? Именно тех, которые указаны. Хотя, FD_CONNECT мне не шибко нужен.
Вот скидываю пример Джонса и Оланда из их книги (Си), А так же тот же пример, но на асме (ужасная разметка но понять можно при желании) http://wasm.ru/forum/index.php?action=vthread&forum=12&topic=8027 176633015__eventselect.cpp