rtischer8277 Ответов: 2

Ищете пример кода, реализующего casyncsocket MFC


Может ли кто-нибудь указать мне на пример кода, который на самом деле использует CAsyncSocket, где уведомление сервера OnAccept отсоединяет сокет и повторно присоединяет его в другом потоке?

В настоящее время мой прототип должен уничтожить сокет слушателя и воссоздать его заново, чтобы он мог MyServerCAsyncSocket::OnAccept второй MyClientCAsyncSocket::Connect-ion от клиента. Это не должно быть так, как это работает. Сокет прослушивателя должен оставаться открытым в ожидании следующих данных от клиента.

Но, похоже, нет никакого рабочего образца кода, из которого я мог бы определить, что я делаю неправильно в своем коде. Отсюда и моя просьба.

Что я уже пробовал:

Я пробовал отсоединять и присоединять. После отсоединения я устанавливаю m_hSocket = NULL, который предписывает MSDN, но делает ASSERT( m_hSocket == INVALID_SOCKET), который равен -1, а не NULL.

Richard MacCutchan

Может кто-нибудь указать мне на
Что плохого в использовании Google?

rtischer8277

Очень смешной. Но я серьезно. CAsyncSocket C++ MFC, похоже, не имеет никаких пользователей, даже на столь хваленой арене устаревшего кода MFC. Если так, то я, по крайней мере, хотел бы услышать об этом. См. мою публикацию StackOverflow: "нет уведомления сервера OnAccept при повторном подключении клиента".

2 Ответов

Рейтинг:
14

KarstenK

Для простоты я бы всегда использовал новую розетку.

Как утверждают рассказывает: набор

m_hSocket = INVALID_SOCKET;

когда закончишь. Если вы используете какой-то сторонний код = > придерживайтесь его правил.

Проверьте это пример проекта.


Рейтинг:
1

rtischer8277

Игорь Тандетник на форуме Visual Studio C ++ указал на плакат с примером программы, на котором показан полностью работающий CAsyncSocket. Эту программу, MFCSOCS.EXE, можно загрузить по ftp с http://ftplike.com (найдите MFCSOCS.EXE). Это единственная программа-пример, которая в одной простой клиент-серверной программе показала, как работает CAsyncSocket, которая, по сути, неявно показывает истинную диаграмму состояний своих уведомлений (OnReceive, OnConnect, OnSend, OnOutOfBandData и OnClose) и их команд (Receive, Connect, Accept , Отправить и закрыть). Я утверждаю, что эти отношения не могут быть выведены из справочного материала MSDN. Если, конечно, вы уже не знаете, каковы отношения, что MS советует вначале.