<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[only_write_bug的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/only_write_bug</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; only_write_bug]]></copyright><item><title><![CDATA[QT_Creater开发常见错误解决办法]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/164625503</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/164625503</guid><author>only_write_bug</author><pubDate>Tue, 08 Sep 2026 16:48:06 +0800</pubDate><description><![CDATA[&lt;think&gt;我们根据要求生成≤150字的文章摘要。内容是关于C2001和C2146错误的解决办法，包括修改文件编码和添加编译指令。需要简洁概括。&lt;/think&gt;在Qt中遇到C2001和C2146错误，通常因源文件编码不符。解决办法：一、修改文件编码为UTF-8（工具→外部→配置→文本编辑器→行为→文件编码）；二、在报错文件首行添加#pragma execution_character_set(&quot;utf-8&quot;)。两种方法可有效解决常量换行及语法错误。]]></description><category></category></item><item><title><![CDATA[ESP32 Arduino 框架中 Preferences 类的使用指导：函数讲解与实战示例]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/163632216</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/163632216</guid><author>only_write_bug</author><pubDate>Mon, 10 Aug 2026 11:11:45 +0800</pubDate><description><![CDATA[摘要： ESP32开发中，Preferences库提供了一种高效、可靠的非易失性存储（NVS）解决方案，适用于存储配置参数、设备状态等数据。相较于文件系统或EEPROM模拟，Preferences支持键值对存储、多种数据类型、命名空间隔离，并具备原子操作和磨损均衡特性，能有效延长Flash寿命。其基本使用流程为“打开-&gt;读写-&gt;关闭”，核心函数包括begin()、put/get系列数据读写方法及remove()、clear()等辅助功能。开发时需注意命名空间规划、错误处理及数据更新策略，避免频繁]]></description><category></category></item><item><title><![CDATA[C语言组播的使用]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/159168140</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/159168140</guid><author>only_write_bug</author><pubDate>Tue, 17 Mar 2026 17:26:08 +0800</pubDate><description><![CDATA[本文详细介绍了组播通信的实现方法及相关函数。主要内容包括：1. 组播初始化和关闭的实现，通过multicast_util.h/c提供接口函数，支持设置组播地址、端口、网络接口、超时时间和缓冲区大小；2. setsockopt函数的详细说明，包括SOL_SOCKET、IPPROTO_IP和IPPROTO_TCP三个协议层的选项参数及其应用场景；3. inet_ntop和inet_pton函数的用法详解，包括IPv4/IPv6地址的二进制与字符串格式转换。]]></description><category></category></item><item><title><![CDATA[QNetworkInterface类介绍]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/159115776</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/159115776</guid><author>only_write_bug</author><pubDate>Mon, 16 Mar 2026 11:08:33 +0800</pubDate><description><![CDATA[本章节主要介绍网络通信中的QNetworkInterface类的相关信息，以便辅助网络编程]]></description><category></category></item><item><title><![CDATA[QT组播的建立和使用（绑定特定的网卡，绑定特定IP）]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/159114511</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/159114511</guid><author>only_write_bug</author><pubDate>Mon, 16 Mar 2026 10:46:48 +0800</pubDate><description><![CDATA[本文介绍了组播(Multicast)的基本概念和使用方法。组播是一种高效的网络通信方式，使用D类IP地址(224.0.0.0-239.255.255.255)实现一对多数据传输。文章详细说明了使用QUdpSocket实现组播的步骤：创建套接字、绑定端口、加入组播组、发送/接收数据以及离开组播组。特别强调了在多网卡环境下绑定特定网卡的重要性，并提供了查找和绑定指定网卡的方法。通过合理设置组播TTL和网卡接口，可以确保组播通信的可靠性和效率。]]></description><category></category></item><item><title><![CDATA[基于I/O复用的服务器端搭建]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148719219</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148719219</guid><author>only_write_bug</author><pubDate>Tue, 17 Jun 2025 18:22:38 +0800</pubDate><description><![CDATA[摘要：I/O复用技术通过select()函数实现单进程同时监视多个文件描述符，提升服务器并发性能。文章首先对比了多进程与I/O复用服务器的差异，然后详细介绍了select()函数的使用方法，包括fd_set操作函数（FD_ZERO、FD_SET等）和select参数设置。最后给出一个I/O复用服务器端实现示例，展示了如何通过select监听新连接和客户端数据。该技术避免了多进程的资源消耗，是高效处理多客户端连接的解决方案。]]></description><category></category></item><item><title><![CDATA[进程间通信，管道、]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148631322</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148631322</guid><author>only_write_bug</author><pubDate>Fri, 13 Jun 2025 14:58:18 +0800</pubDate><description><![CDATA[进程间通信(IPC)是指不同进程间交换数据的方法，由于进程拥有独立内存空间，需特殊方式实现。管道是一种常见的IPC机制，属于操作系统资源。通过pipe()创建管道，使用文件描述符进行读写操作。文章介绍了单向管道通信的实现方法，并指出单个管道双向通信需通过延时读取实现数据顺序控制。更推荐创建两个独立管道分别处理读写，这种方式更高效可靠。示例代码演示了父子进程间使用管道进行单向和双向通信的具体实现方法。]]></description><category></category></item><item><title><![CDATA[TCP客户端进程分割输入输出]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148631075</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148631075</guid><author>only_write_bug</author><pubDate>Fri, 13 Jun 2025 13:42:48 +0800</pubDate><description><![CDATA[创建TCP客户端，创建子进程分割TCP客户端的read功能和write功能，实现分割I/O的目的。]]></description><category></category></item><item><title><![CDATA[并发服务器]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148630596</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148630596</guid><author>only_write_bug</author><pubDate>Fri, 13 Jun 2025 13:14:03 +0800</pubDate><description><![CDATA[【代码】并发服务器。]]></description><category></category></item><item><title><![CDATA[C语言多进程TCP服务器与客户端]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148615045</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148615045</guid><author>only_write_bug</author><pubDate>Fri, 13 Jun 2025 10:33:13 +0800</pubDate><description><![CDATA[本文介绍了使用C语言实现多进程TCP服务器和客户端的关键技术。服务器端通过fork()创建子进程处理并发连接，使用SIGCHLD信号和sigaction()函数避免僵尸进程，并详细说明了套接字管理机制。客户端则利用多进程模拟并发请求，展示请求定制和响应处理流程。文章还涵盖了系统测试优化方法，包括进程池、连接复用等技术，并探讨了安全增强措施和应用扩展方向。这种多进程模型虽然资源消耗较大，但在稳定性和隔离性方面具有优势，适合高可靠性网络服务开发。]]></description><category></category></item><item><title><![CDATA[优雅的断开套接字连接]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148610215</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148610215</guid><author>only_write_bug</author><pubDate>Thu, 12 Jun 2025 15:22:44 +0800</pubDate><description><![CDATA[摘要：本文详细探讨了TCP/UDP连接的优雅断开机制。重点介绍了TCP半关闭(shutdown)的概念与实现方法，包括SHUT_RD、SHUT_WR和SHUT_RDWR三种关闭模式的使用场景。文章还涉及SO_LINGER选项的应用技巧，以及跨平台实现、错误处理、性能优化等高级话题。针对不同协议（TCP/UDP）和场景（阻塞/非阻塞、多线程、HTTP等）提供了具体的关闭方案，并给出了完整的代码示例。最后介绍了连接池管理和批量关闭等优化技术，为开发者提供了全面的网络连接关闭最佳实践指南。]]></description><category></category></item><item><title><![CDATA[已连接（connected）UDP和未连接（unconnected）UDP的区别]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148609467</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148609467</guid><author>only_write_bug</author><pubDate>Thu, 12 Jun 2025 14:24:39 +0800</pubDate><description><![CDATA[摘要： 已连接和未连接UDP的主要区别在于目标地址的绑定方式。未连接UDP（默认）每次发送需指定地址（sendto），可接收任意来源数据（recvfrom），但性能较低。已连接UDP通过connect()绑定固定地址，之后使用send/recv，仅能与该地址通信，性能更优且能接收异步错误（如ICMP）。适用场景：未连接UDP适合多目标通信（如DNS），已连接UDP适合固定对端的高效通信（如实时音视频）。connect()仅记录地址，不改变UDP无连接本质，可多次调用或通过AF_UNSPEC断开。注意已连接U]]></description><category></category></item><item><title><![CDATA[网络地址初始化（sockaddr_in初始化）、bind（）函数详解]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148605912</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148605912</guid><author>only_write_bug</author><pubDate>Thu, 12 Jun 2025 11:26:22 +0800</pubDate><description><![CDATA[本文介绍了网络编程中socket地址初始化的两种方法以及bind函数：1) 通过指定IP地址(inet_addr/aton)和端口号(atoi+htons)初始化sockaddr_in结构体；2) 使用INADDR_ANY自动获取本机IP地址，适用于服务器端程序，允许从多个IP接收数据。主要涉及arpa/inet.h中的网络地址转换函数(inet_addr、htonl等)和端口号处理，其中服务器端推荐使用INADDR_ANY简化配置，而客户端通常需要明确指定IP地址。]]></description><category></category></item><item><title><![CDATA[inet_addr()和inet_aton()函数详解]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148604927</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148604927</guid><author>only_write_bug</author><pubDate>Thu, 12 Jun 2025 10:47:10 +0800</pubDate><description><![CDATA[【摘要】inet_addr()和inet_aton()是用于IPv4地址转换的函数，均将点分十进制字符串转为32位网络字节序二进制值。inet_addr()直接返回数值，出错返回INADDR_NONE（-1），但处理255.255.255.255时可能冲突；inet_aton()通过参数返回结果并明确返回1/0表示成功/失败，更安全可靠。示例显示两者对有效地址（192.168.1.110）均转换成功，但对无效地址（192.168.2.266）都能正确报错。建议优先使用inet_aton()。]]></description><category></category></item><item><title><![CDATA[地址位与数据位、大端和小端字节序、字节序转换]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148603350</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148603350</guid><author>only_write_bug</author><pubDate>Thu, 12 Jun 2025 09:45:51 +0800</pubDate><description><![CDATA[摘要：计算机系统中，地址位和数据位是内存操作的基础。地址位（n位）决定可寻址空间（2^n），32位系统支持4GB，64位系统支持16EB。数据位表示存储的实际内容，总线宽度影响单次传输量。多字节数据存储涉及字节序问题：大端序（最高有效字节在低地址，如网络传输）和小端序（最低有效字节在低地址，如x86架构）。编程中需使用htons/htonl等函数进行主机序与网络序转换，确保跨平台数据一致性。理解这些概念对底层开发、网络编程及跨平台兼容至关重要，字节序差异是数据传输和文件格式处理的关键考量因素。]]></description><category></category></item><item><title><![CDATA[套接字类型与协议设置]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148590269</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148590269</guid><author>only_write_bug</author><pubDate>Wed, 11 Jun 2025 17:33:10 +0800</pubDate><description><![CDATA[摘要：socket()函数是创建网络套接字的核心接口，其三个关键参数决定通信方式：(1)domain指定协议族(如PF_INET/PF_INET6)；(2)type选择套接字类型(SOCK_STREAM对应TCP可靠连接，SOCK_DGRAM对应UDP无连接)；(3)protocol通常设为0自动匹配协议。不同参数组合会确定最终的通信协议，如PF_INET+SOCK_STREAM默认使用TCP，而PF_INET+SOCK_DGRAM则使用UDP。该函数通过灵活的参数配置支持多种网络通信需求。]]></description><category></category></item><item><title><![CDATA[Windows平台网络通信]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/148586561</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/148586561</guid><author>only_write_bug</author><pubDate>Wed, 11 Jun 2025 16:56:48 +0800</pubDate><description><![CDATA[本文介绍了Windows平台下使用Winsock2进行网络编程的基本步骤。首先需要配置开发环境，在Visual Studio 2008中导入winsock2.h头文件并链接ws2_32.lib库。其次详细说明了WSAStartup初始化函数的使用方法，包括版本号设置和错误处理。文章还列举了Windows系统中常用的套接字相关函数，如socket、bind、listen、accept等，并提供了客户端和服务端的实例。服务端示例中展示了基本的TCP通信流程]]></description><category></category></item><item><title><![CDATA[QgraphicsView异步线程加载地图瓦片]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/147579156</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/147579156</guid><author>only_write_bug</author><pubDate>Mon, 28 Apr 2025 14:47:07 +0800</pubDate><description><![CDATA[本节主要记录一下qt开发过程中离线地图瓦片的加载方式，瓦片加载选择graphicsView控件，同时为了不影响主线程事件和其他操作，这里采用了异步线程的操作，将地图瓦片加载的步骤放到了异步子线程之中。]]></description><category></category></item><item><title><![CDATA[QT文本框（QTextEdit）设置内容只可复制粘贴]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/147504355</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/147504355</guid><author>only_write_bug</author><pubDate>Fri, 25 Apr 2025 14:52:28 +0800</pubDate><description><![CDATA[今天记录一下在qt开发过程中文本框编辑模式的知识。在创建了一个窗口使用控件的时候，因为我的设计需求，要求在使用过程中，文本框里面的数据，但是。实现设计：添加事件过滤器，选择过滤控件中的对应按键操作，从而实现该目的。]]></description><category></category></item><item><title><![CDATA[QT创建线程，QT多线程的创建和使用，QT线程池]]></title><link>https://blog.youkuaiyun.com/only_write_bug/article/details/142518401</link><guid>https://blog.youkuaiyun.com/only_write_bug/article/details/142518401</guid><author>only_write_bug</author><pubDate>Wed, 25 Sep 2024 18:19:29 +0800</pubDate><description><![CDATA[1. **UI响应性：**- 在单线程模型中，如果需要执行长时间运行的任务（如网络请求、文件I/O、计算密集型操作等），这将会阻塞主线程，导致UI无响应。通过在单独的线程中执行这些任务，可以确保主线程保持响应性，提高用户体验。2. **利用多核处理器：**- 多线程允许应用程序利用多核处理器的性能优势。通过并行执行任务，可以提高应用程序的性能和效率。3. **任务分离：**- 将不同任务放在不同线程中可以更好地组织和管理代码，提高代码的可读性和维护性。4. **避免阻塞：**]]></description><category></category></item></channel></rss>