C++ MFC教程:阻塞与非阻塞模式解析

需积分: 24 33 下载量 152 浏览量 更新于2024-08-19 收藏 3.27MB PPT 举报
"C++ MFC 基础教程 - 阻塞模式/非阻塞模式网络编程" 本文档是一份面向初学者的C++ MFC基础教程,共计14章442页,深入浅出地介绍了Visual C++集成开发环境以及MFC程序设计的各种核心概念。教程不仅涉及C++的基础知识,还包括了MFC控件的使用、多线程编程、多媒体编程、网络编程以及动态链接库的应用等进阶主题。 在讲解阻塞模式和非阻塞模式时,文档指出CSocket类创建的套接字默认支持阻塞模式。在阻塞模式下,当进行网络通信(如使用Receive函数接收数据)时,如果数据未到达,程序会暂停并等待,直到有数据可用或操作成功,才会继续执行后续代码。这种同步的方式确保了数据传输的完整性,但可能会导致程序在等待期间无法处理其他任务。 非阻塞模式则采用了一种不同的处理方式。在这种模式下,即使没有数据可读,调用Receive函数也会立即返回,而不是阻塞等待。这种异步通信模式允许程序在等待数据的同时处理其他任务,提高了程序的响应性和效率。通常,非阻塞模式会结合Socket事件的消息机制,通过消息循环来检查和处理网络事件,如数据到达、连接建立等。 MFC(Microsoft Foundation Classes)库是微软为Visual C++提供的一个类库,它简化了Windows应用程序的开发,包括窗口、控件、对话框等的处理。MFC封装了许多底层Windows API,让开发者可以更高效地编写代码。 在Visual C++ 6.0的使用部分,教程提到了启动开发环境的方法,包括创建快捷方式以及首次运行时出现的【Tip of the day】提示对话框,帮助用户更好地熟悉开发环境的界面和功能。 这份教程为想要学习C++ MFC编程的初学者提供了一个全面的起点,从基础知识到高级特性,逐步引导读者掌握MFC应用开发的核心技术,包括阻塞和非阻塞模式的网络编程。通过学习,读者能够理解如何在C++环境中构建高效的Windows应用程序。
2023-06-08 上传

07-13 10:08:02.266 403 12194 V EmulatedCamera_FakeCamera3: threadLoop: ReadoutThread: Timed out waiting for request 07-13 10:08:02.266 403 12194 V EmulatedCamera_FakeCamera3: threadLoop: ReadoutThread waiting for request 07-13 10:08:02.268 401 12178 I modules.usbaudio.audio_hal: in_read ret 0 07-13 10:08:02.273 401 12178 I modules.usbaudio.audio_hal: in_read ret 0 07-13 10:08:02.276 403 12194 V EmulatedCamera_FakeCamera3: threadLoop: ReadoutThread: Timed out waiting for request 07-13 10:08:02.277 403 12194 V EmulatedCamera_FakeCamera3: threadLoop: ReadoutThread waiting for request 07-13 10:08:02.278 401 12178 I modules.usbaudio.audio_hal: in_read ret 0 07-13 10:08:02.286 716 12304 E ActivityManager: ANR in com.winew.ddcsx (com.winew.ddcsx/.activity.MainActivity) 07-13 10:08:02.286 716 12304 E ActivityManager: PID: 11129 07-13 10:08:02.286 716 12304 E ActivityManager: Reason: Input dispatching timed out (1942a1b com.winew.ddcsx/com.winew.ddcsx.activity.MainActivity (server) is not responding. Waited 5002ms for MotionEvent(deviceId=11, source=0x00001002, displayId=0, action=DOWN, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, classification=NONE, edgeFlags=0x00000000, xPrecision=8.5, yPrecision=15.2, xCursorPosition=nan, yCursorPosition=nan, pointers=[0: (1365.8, 1340.9)]), policyFlags=0x62000000) 07-13 10:08:02.286 716 12304 E ActivityManager: Parent: com.winew.ddcsx/.activity.MainActivity 07-13 10:08:02.286 716 12304 E ActivityManager: Load: 12.42 / 11.29 / 12.0 07-13 10:08:02.286 716 12304 E ActivityManager: ----- Output from /proc/pressure/memory ----- 07-13 10:08:02.286 716 12304 E ActivityManager: some avg10=0.00 avg60=0.00 avg300=0.00 total=249698 07-13 10:08:02.286 716 12304 E ActivityManager: full avg10=0.00 avg60=0.00 avg300=0.00 total=74789 07-13 10:08:02.286 716 12304 E ActivityManager: ----- End output from /proc/pressure/memory -----

2023-07-15 上传