- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
https://docs.microsoft.com/en-us/windows/desktop/api/winsock/nf-winsock-wsaasyncselect
int WSAAsyncSelect(
SOCKET s,
HWND hWnd,
u_int wMsg,
long lEvent
);
/*
hWnd
A handle that identifies the window that will receive a message when a network event occurs.
*/
Почему виндовые асинхронные (или правильно говорить "небликирующиеся") сокеты так черезжопно сделаны? Нафига им через HWND надо месседжи слать? Что, другого способа нет для оповещений?
Требовать для работы асинхронных сокетов чтоб какое-то окно было это как требовать зубную щетку для входа в туалет чтоб посрать
Кстати, даже у server core гуйню не отпилили.
Лул, я задался этим же вопросом, когда впервые столкнулся с этой функцией. Ещё где-то накопал то ли особый класс окна, то ли функцию, которая создаёт окошко, у которого нет окошка, но есть hwnd.
Это растёт, скорее всего, из тех дремучих времён, когда формочки получали месседжи от своих детей и в своём wndproc в огромном свитче всех их обрабатывали. Нужно получить пару байт из сети? Просто сделай свитч побольше.
> Что, другого способа нет для оповещений?
IOCP, он же в кишках boost::asio.
В делфях она зовётся AllocateHwnd. Создаётся скрытое окошко 0x0, с классом TPUtilWindow.
@Это растёт, скорее всего, из тех дремучих времён, когда формочки получали месседжи от своих детей и в своём wndproc в огромном свитче всех их обрабатывали.
А что, сейчас разве что-то изменилось?