Прожорливая функция
При использовании функции accept() программа ждет коннекта и перестает реагировать на внешние ртаздражители( не отвечает) до тех пор пока не проихойдет коннект, после него все отвисает и она продолжает работу. Как сделать так, чтобы из за этой функции не терялся контроль над программой? Временным решением послужило использование компонента backgroundWorker, однако я думаю это довольно кривой способ, хотелось бы что-нить пооптимальнее.
Никаких циклов while (1) {} нету, зависает именно эта функция, поэтому вставить внутрь нее ничего нельзя. Все примеры которые приводились рассчитаны на консольный режим, поэтому работают в том числе и в MSDN.
И еще, если все-таки решу делать с помощью MFC, то можно ли использовать ее классы только для сокетов? или нужно будет все приложение строить по принципу MFC?
Поэтому стоит, наверное, использовать другую модель ввода/вывода(WSAAsyncSelect,select).
Неужели в Windows forms приложении нужно использовать winsock2? Ведь как я понял они затачивались именно для консольных приложений.
Обязательно ли использовать ли MFC версию сокетов, если MFC вообще нет в моем проекте. Наверняка должны быть собственные средства Windows forms для обеспечения клиент\серверной технологии.
И еще: можно ли сделать только сокеты с использованием MFC, или все приложение придется перестраивать для использования этой технологии?
Так собственно на то он и accept, чтобы стоять и ждать коннекта. Если нужен еще какой то GUI во время ожидания подключения - выноси сетевую функциональность (accept) в отдельный thread и все.
Цитата:
Windows forms
Тебе в раздел Microsoft .NET Framework
Цитата:
accept()
Интереснео откуда появилась ф-ия в приложении под .NET? Ты используешь C++ CLI?
В общем в пространстве System.Net.Sockets для асинхронной обработки данных. Например можешь использовать метод Socket.BeginAccept. А вообще советую присмотреться к классу TcpListener и поучить мат. часть.
Хорошая статья