Windows sockets: Отключение
Данная статья 2 статей и сопровождающий описывается ряд проблем в программировании Windows sockets.В этой статье описывается отключить.Другие вопросы описаны в статьях: Windows sockets: Порядок байтов и Windows sockets: Преобразование строк.
При использовании или производного от класса CAsyncSocket, вам потребуется самостоятельно управлять этих проблем.При использовании или производного от класса CSocket, MFC управляет их автоматически.
Отключение
Сокет может находиться в «отключить режим» или «nonblocking режим». Отключение функции сокетов в синхронном режиме (или) возвращают до их можно запускать их действие.Это называется отключить, поскольку сокет которого вызывалась функция не сможет делать что-либо — deny — до вызова.Вызов к функции-члену Receive, например, может потребоваться произвольно длительное время, так как он ожидает отправляющее приложение отправить (если используется CSocket или using CAsyncSocket с отключение).Если объект CAsyncSocket работающий асинхронно (в режиме nonblocking), вызов возвращается немедленно и текущий код ошибки, retrievable с функцией-членом GetLastError, WSAEWOULDBLOCK, указывающее, что вызов было отказано доступен его немедленно не возвращен из-за режима.(CSocket никогда не возвращает WSAEWOULDBLOCK.Класс управляет отключить).
Реакция на событие сокетов отличается в 32 - и 64 операционными системами Windows 95 или Windows (например, 98), чем в шестнадцатиразрядными операционными системами Windows (например, 3.1).В отличие от 16-битные операционных системах, 32 и 64 64-разрядных операционных системах заблаговременно не удастся многозадачность используют и предоставляют многопоточность.В 32 - и 64 операционными системами, можно поместить сокета в отдельные рабочие потоки.Сокет в потоке может отключить без мешать с другими действиями в приложении и не тратить время вычисления на блокировку.Дополнительные сведения о многопоточном программировании см. в статье многопоточность.
Примечание |
---|
В многопоточных приложениях можно использовать блокировки, характер CSocket для упрощения свою структуру программы, не затрагивая отзывчивости пользовательского интерфейса.При обработке взаимодействия с пользователем в основном потоке и обработки CSocket в других потоках можно отделить эти логические операции.В многопоточном приложении, не 2, эти действия должны объединяться и обрабатываются как один поток, которая обычно означает использование CAsyncSocket поэтому можно обрабатывать запросы ссылок по требованию или переопределяя CSocket::OnMessagePending для обработки действия пользователя во время длинномерного синхронного действия. |
В остальной части данного раздела, предназначенных для программистов на 16-битные операционные системы:
Как правило, при использовании CAsyncSocket, то следует избегать использования блокировки операции и работать асинхронно.В асинхронных операциях из точки, на которых выдается код ошибки WSAEWOULDBLOCK после вызова Receive, например, ожидается до тех пор, пока в нее не OnReceive вызывается для уведомления пользователя о том, что можно чтение снова.Асинхронные вызовы позвонены с обратного вызова функция уведомления обратного вызова для сокета соответствующую, как OnReceive.
Под окнами, блокирующий вызов рассмотрим неправильный практикой.По умолчанию CAsyncSocket поддерживает асинхронные вызовы и необходимо управлять отключить с помощью уведомления обратного вызова.Класс CSocket, с другой стороны, синхронным.Он нагнетает сообщений окон и управляет отключить.
Дополнительные сведения об отключении см. в разделе спецификация Windows sockets.Дополнительные сведения о функциях " ON " см. в разделе Windows sockets: Уведомления сокета и Windows sockets: Наследование от классов сокета.
Дополнительные сведения см. в следующих разделах.