Если не очень тяжело, объясните, как с помощью ioctlsocket (в winsock) сделать неблокирующие сокеты, в смысле как разблокировать сокет с помощью этой функции я знаю, но как с помощью select в последствии проверять статус, что-то не очень понятно :(
Кстати есть ли принципиальная разница между асинхронными сокетами(WSA) и неблокирующими......... Thanks
Пример на WSAAsyncSelect28.04.03 10:38 Автор: ukv Статус: Незарегистрированный пользователь
// Module Name: asyncselect.cpp
//
// Description:
//
// This sample illustrates how to develop a simple echo server Winsock
// application using the WSAAsyncSelect() I/O model. This sample is
// implemented as a console-style application (to reduce the programming
// complexity of writing a real Windows application) and simply prints
// messages when connections are established and removed from the server.
// The application listens for TCP connections on port 5150 and accepts them
// as they arrive. When this application receives data from a client, it
// simply echos (this is why we call it an echo server) the data back in
// it's original form until the client closes the connection.
//
// Since the WSAAsyncSelect I/O model requires an application to manage
// window messages when network event occur, this application creates
// a window for the I/O model only. The window stays hidden during the
// entire execution of this application.
//
// Compile:
//
// cl -o asyncselect asyncselect.cpp ws2_32.lib user32.lib gdi32.lib
//
цитата из МСДНа:
The WSAAsyncSelect function automatically sets socket s to nonblocking mode, regardless of the value of lEvent. See the ioctlsocket functions for information on how to set the nonblocking socket back to blocking mode.
а как тогда правильно?07.05.03 12:34 Автор: L Статус: Незарегистрированный пользователь
> Асинхронные сокеты говоришь? Не слышал про такие. Теоретик? Или жажда правды обуяла? На MSDN это весьма расхожее словосочетание для обозначения асинхронного в/в с использованием сокетов.
> Действительно, междусокетамии modeесть разница. Ты практически точь-в-точь повторил мою фразу.
> ЗЫ. Все 4 модели асинхронного ввода-вывода (без select-а) > подразумевают неблокирующий режим работы сокета. Читай вопрос автора, ответ и моё замечание.
<без заголовка>11.05.03 11:59 Автор: IgorR <Igor Razin> Статус: Member
>Правильный ответ: не путать тёплое с мягким. Между асинхронными сокетами и non-blocking mode как раз такипринципиальнаяразница.
И это я ещё теоритик?
> > Действительно, междусокетамииmodeесть разница. > Ты практически точь-в-точь повторил мою фразу. Ту, что выше? Гы. Глумлюсь я ;)
> > ЗЫ. Все 4 модели асинхронного ввода-вывода (без > select-а) подразумевают неблокирующий режим работы сокета. > Читай вопрос автора, ответ и моё замечание. Читал, прикинь?
Автор> Кстати есть ли принципиальная разница между асинхронными сокетами(WSA) и неблокирующими
amirul>Всегда считал, что асинхронные и есть неблокирующие
>Правильный ответ: не путать тёплое с мягким. Между асинхронными сокетами и non-blocking mode как раз такипринципиальнаяразница.
Твоё "замечание" абсолютно не в тему. Если есть что сказать по существу - говори, а так - выпендрёж.
итак:
1)асинхронные сокеты это сокеты позволяющие проводить в\в асинхронно, то бишь независимо самой проги
2)неблокирующие сокеты - это сокеты которые не блокируют выполнение программы. достигаетмся это выполнением в\в параллельно самой проге
или я чегото неправильно понимаю, или это одно и то же. Аснхронные сокеты не блокируют прогу а неблокирующие работают асинхронно Ж)
Не говори загадками. Растолкуй эти понятия мне, ламеру бестолковому Ж)07.05.03 17:13 Автор: Killer{R} <Dmitry> Статус: Elderman