在计算机硬件及系统管理领域,BIOS是计算机启动和运行过程中一个至关重要的固件系统。它负责在计算机加电启动后执行自检和初始化工作,加载操作系统,并提供底层硬件的管理。对于联想ThinkPad S2 Gen 6用户来说,升级操作系统,尤其是从Windows 10升级至Windows 11,可能会遇到系统兼容性问题,导致计算机在启动或运行过程中出现蓝屏和重启现象。这种情况往往是由于BIOS版本不支持新的操作系统,或者BIOS设置中存在某些配置与新系统不兼容导致的。 为了解决联想ThinkPad S2 Gen 6蓝屏和重启的问题,通常需要对BIOS进行更新。在进行BIOS更新之前,用户必须确保下载的BIOS版本与自己的笔记本型号和硬件配置相匹配,并且必须严格按照更新说明进行操作,以免出现硬件损坏或更严重的系统问题。更新BIOS通常涉及到将新的BIOS文件刷入主板,这一过程需要使用特定的工具和程序。更新BIOS时还需要注意,整个过程必须在稳定的电源环境下完成,以防止在更新过程中突然断电造成硬件损坏。 此次提供的一系列文件名称列表,如me_nvp.bin、me_nvp_cel.bin、ME_UPD.bin等,很可能就是联想ThinkPad S2 Gen 6对应Windows 11系统兼容的BIOS固件文件。这些文件可能包含了用于修复和升级BIOS的关键数据和代码。例如,ME_UPD.bin和ME_UPD_Cel.bin文件可能包含了微码更新的数据,这是更新BIOS中不可或缺的部分,它用于修正微处理器中存在的缺陷和漏洞。文件desc_nvp.bin和desc_nvp_cel_lk.bin等则可能包含了相应的描述信息,说明了BIOS固件的版本、发布日期、支持的功能等详细信息,对于用户来说是重要的参考。 在修复BIOS时,Master_Access.cfg文件可能用于配置BIOS的访问权限设置,比如定义哪些用户可以访问BIOS设置界面,哪些操作被允许或禁止。这有助于保护系统免受非授权的修改或恶意软件攻击。由于BIOS的设置和配置直接影响到硬件层面的运行,因此这些文件是联想ThinkPad S2 Gen 6用户必须细致处理和妥善管理的敏感数据。 联想公司作为知名的计算机制造商,一直以来致力于提供稳定可靠的硬件产品及配套的软件支持。针对特定型号的笔记本电脑,如ThinkPad S2 Gen 6,在推出新操作系统时,会同步提供更新的BIOS版本,以确保用户的设备能够顺利运行最新的软件。对于用户来说,及时关注官方发布的信息和指南,获取最新且适合的BIOS更新,对于维护系统的稳定性和提升使用体验是至关重要的。 在此,提醒用户,在进行BIOS更新过程中,务必仔细阅读官方提供的操作手册和升级指南,遵循正确的步骤进行操作,并确保计算机在更新过程中始终处于稳定的电源供应之下。若非必要,不建议用户自行尝试非官方的BIOS刷写操作,因为不当的操作可能会导致笔记本电脑硬件损坏,甚至丧失保修资格。如果有任何疑虑,及时联系联想官方客服或认证维修中心获取帮助和支持是明智的选择。
2025-11-13 18:00:44 44.51MB BIOS
1
剪刀石头布检测数据集是一个面向目标检测任务的标注数据集,它包含1973张图片,这些图片被划分为三个类别,即剪刀、石头和布。数据集采用Pascal VOC格式和YOLO格式,提供了对应的标注文件,包括.xml文件和.txt文件,这些文件与.jpg图片一一对应。 数据集中的图片数量与标注文件数量都是1973个,说明每张图片都有相应的标注信息。在标注过程中,使用了名为labelImg的工具,它是广泛应用于目标检测任务的图像标注软件。在标注规则方面,该数据集采用矩形框来标注图片中的对象,这种做法在目标检测中是常见的,因为矩形框可以清晰地定义出目标对象在图片中的位置和尺寸。 标注类别总数为3,分别对应着三种手势:剪刀(bu)、石头(jiandao)、布(shitou)。每一个类别中的目标对象数量也有所提及,其中“剪刀”类别的目标框数为609个,“石头”为679个,“布”为685个。标注的总框数为1973,这表明数据集中的每张图片都至少包含一个矩形框,框中是对应该图片中手势的位置。 此外,数据集的标注类别名称分别用中文进行了命名,即“剪刀”、“石头”和“布”,这可能是为了便于理解标注者的意图,也可能是为了适应某些需要中文标签的特定应用场景。在数据集的使用方面,虽然提供了图片及其标注,但是制作者明确声明,他们不对由此数据集训练得到的模型或权重文件的精度作任何保证。这提示使用者,在应用数据集进行模型训练之前需要仔细检查标注的准确性,并可能需要进一步的数据清洗和增强步骤。 这份数据集非常适合用于机器学习和计算机视觉中目标检测模型的训练和验证,尤其是那些涉及手势识别、图像分类和实时对象检测的应用。由于其涵盖的手势种类有限,因此它也是一个入门级别的数据集,便于研究人员和开发者测试和调试他们的算法。 数据集的提供者没有提及任何特定的版权信息或使用限制,这可能意味着该数据集可以被广泛使用于学术研究和商业开发。不过,对于任何商业用途,建议还是先确认数据集的具体使用条款,以避免潜在的法律问题。此外,考虑到数据集的标注质量直接关系到最终模型的性能,使用者应当对标注进行仔细的审查和必要的修正,确保数据集的高质量能够帮助模型训练达到预期的效果。
2025-11-13 17:52:33 2.38MB 数据集
1
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
2025-11-13 17:37:48 108KB python
1
内容概要:本文详细记录了DINOv3模型的测试过程,包括预训练模型的下载、环境配置、模型加载方式以及在不同下游任务(如图像分类、目标检测、图像分割)中的应用方法。重点介绍了如何冻结DINOv3的backbone并结合任务特定的头部结构进行微调,同时对比了PyTorch Hub和Hugging Face Transformers两种主流模型加载方式的使用场景与优劣,并提供了显存占用数据和实际代码示例,涵盖推理与训练阶段的关键配置和技术细节。; 适合人群:具备深度学习基础,熟悉PyTorch框架,有一定CV项目经验的研发人员或算法工程师;适合从事视觉预训练模型研究或下游任务迁移学习的相关从业者。; 使用场景及目标:①掌握DINOv3模型的加载与特征提取方法;②实现冻结backbone下的分类、检测、分割等下游任务训练;③对比Pipeline与AutoModel方式的特征抽取差异并选择合适方案;④优化显存使用与推理效率。; 阅读建议:此资源以实操为导向,建议结合代码环境边运行边学习,重点关注模型加载方式、头部设计与训练策略,注意版本依赖(Python≥3.11,PyTorch≥2.7.1)及本地缓存路径管理,便于复现和部署。
2025-11-13 17:29:00 679KB PyTorch 图像分割 目标检测 预训练模型
1
**Flot** 是一个基于 JavaScript 的开源库,用于在网页上绘制高质量的图形。它主要利用 HTML5 的 `` 元素进行渲染,能够创建各种图表,包括折线图、柱状图、饼图等。这个“Js 绘图 Flot 示例”是为初学者和开发者提供的学习资源,帮助他们掌握如何使用 Flot 来实现动态数据可视化。 1. **Flot 基本概念** - **Canvas**: Flot 利用 `` 标签作为图形的画布,这是一个HTML5元素,允许JavaScript动态绘制2D图形。 - **Options**: Flot 提供一系列配置选项,如颜色、线条样式、轴刻度、图例等,这些都可以根据需求自定义。 - **Data Series**: 数据系列是绘制图形的基础,每个系列包含一组数据点,每个点由x和y坐标组成。 2. **安装与引入** - Flot 可以通过 CDN 链接或下载源码后本地引用。在HTML文件中引入 `jquery.js` 和 `flot.js`(或压缩后的 `flot.min.js`)。 3. **基本使用** - 创建一个 `` 元素,并为其设置合适的宽度和高度。 - 准备数据,通常以数组形式表示数据系列。 - 使用 jQuery 的 `$.plot()` 函数将数据绘制成图,传入 canvas 元素的选择器和数据对象。 4. **配置选项** - `series`: 设置每种类型图表的样式,如线条样式、填充等。 - `xaxis` 和 `yaxis`: 自定义轴的范围、刻度、标签等。 - `grid`: 控制网格线的显示,可设置网格的颜色、透明度等。 - `legend`: 图例的位置、样式和行为。 - `tooltip`: 提示框的样式和内容。 5. **动态更新** - Flot 支持实时更新数据,只需重新调用 `$.plot()` 并传递新的数据即可。 - 可以结合定时器或者事件监听来实现动态效果,如动画、实时数据流等。 6. **插件扩展** - Flot 社区提供了许多插件,如触摸支持、时间轴、鼠标跟踪、区域选择等,可以进一步增强其功能。 7. **实例解析** - 通过分析压缩包中的示例代码,可以学习如何初始化画布、设置数据和选项,以及如何响应用户交互。 - 示例可能包含多种类型的图表,比如折线图展示趋势,柱状图表示比较,饼图显示比例。 8. **最佳实践** - 优化性能:避免绘制过多的数据点,适时使用数据采样或动态加载。 - 可访问性:为图表添加合适的标题和图例,确保屏幕阅读器能理解。 - 设计原则:遵循良好的色彩搭配和视觉层次,使图表易于理解。 9. **常见问题与解决** - 图形显示不全:检查 `` 大小是否正确设置,以及是否有CSS覆盖。 - 数据更新无效:确保新的数据格式正确,并且调用 `$.plot()` 更新。 - 兼容性问题:Flot 基于 ``,需确保浏览器支持,或者使用polyfill。 通过深入学习和实践这些知识点,你可以熟练地利用 Flot 在网页上创建出交互性强、视觉效果优秀的图表,无论是数据分析还是数据展示都将变得得心应手。在实际项目中,结合具体的业务需求,Flot 将成为强大的可视化工具。
2025-11-13 17:26:48 304KB 动态绘图 Flot
1
C#构建与IIS解耦的WebApi服务Demo 随着技术的快速发展,基于.NET的网络通信方式在不断演进。WebApi作为一种新型的网络服务框架,它的出现大大简化了基于HTTP的服务端与客户端之间的交互。WebApi的典型应用场景之一是在ASP.NET Web应用程序中实现API服务。然而,传统上WebApi服务常常依赖于IIS(Internet Information Services)作为其承载环境。在某些特定场景下,这种依赖可能会成为限制,例如需要跨平台部署或在容器化环境中运行服务时。因此,探讨如何构建一个与IIS解耦的WebApi服务具有重要的实际意义。 在本Demo中,我们采用了C#语言,并通过CS(客户端-服务器)模式的通信方案来实现了一个不依赖于IIS的WebApi服务。这为我们在部署服务时提供了更多的灵活性,如可以将服务部署在不同的操作系统上,或者在微服务架构中更加轻松地进行服务的扩展与维护。相较于传统的WCF(Windows Communication Foundation)解决方案,本Demo中的WebApi服务提供了更加简洁的API设计和更加直接的HTTP通信方式。 为了解耦,本Demo中的WebApi服务不再直接依赖于IIS环境,而是采用了自我托管的方式。这种自我托管的WebApi服务可以完全控制应用程序的生命周期,包括启动、停止和资源管理,这对于需要高度自定义的部署场景尤为重要。此外,自我托管也意味着服务可以在没有Windows环境的Linux或其他操作系统上运行,使得WebApi服务的跨平台特性得以充分发挥。 在实现上,我们可能采用了如.NET Core的跨平台框架来构建Demo,因为.NET Core支持跨平台部署,并且提供了丰富的API来创建Web服务。利用.NET Core中的HttpListener或者Kestrel这类轻量级的Web服务器,我们可以创建独立于IIS的WebApi服务。这些服务器虽然没有IIS那样的功能丰富,但足以应对大多数Web服务的需求,并且更加轻量和快速。 在通信协议上,我们的WebApi服务依然遵循RESTful设计原则,使用HTTP标准方法(如GET、POST、PUT、DELETE等)来处理资源,这使得API的使用和理解变得非常直观。同时,我们可能会使用JSON作为数据交换格式,它是当前Web API中广泛采用的数据格式,具有良好的跨平台兼容性。 在安全性方面,虽然本Demo没有详细展开,但构建与IIS解耦的WebApi服务并不意味着牺牲安全性。我们仍然可以通过各种安全机制来保证服务的安全性,例如使用HTTPS进行加密通信、对输入进行验证、对输出进行编码、实现身份验证和授权控制等。 本Demo展示了一种新的WebApi服务的部署方式,它通过与IIS解耦,提高了服务的灵活性和可移植性,同时也减少了对特定平台的依赖。这种新型的部署方式更适合现代化的云计算和微服务架构,并能够满足现代开发中对于敏捷开发和持续集成的需求。
2025-11-13 17:26:26 5.92MB
1
在Android系统中,串口(Serial Port)调试是一种常见的硬件通信技术,主要用于设备间的数据传输。这个标题提到的“Android 安卓手机串口调试软件”通常是指用于通过USB连接将Android设备与计算机进行串行通信的工具。这类软件允许开发者或者技术人员检查和调试设备的底层硬件通信,例如GPIO(General Purpose Input/Output)、UART(Universal Asynchronous Receiver/Transmitter)等。下面我们将详细介绍Android串口调试的相关知识点。 1. **Android串口基础** - **UART通信**:UART是一种异步串行通信接口,它使用起始位、数据位、奇偶校验位和停止位来传输数据。在Android设备上,UART通常用于与外部硬件设备如传感器、控制器等通信。 2. **USB串口适配**: - Android设备通常不直接提供物理串口,但可以通过USB OTG(On-The-Go)功能模拟串口通信。USB OTG让设备能作为主机或设备,允许直接与电脑或其他USB设备交互。 3. **串口调试软件**: - 标题中提到的软件可能包括如“Serial USB Terminal”、“CoolTerm”、“Termite”等应用,它们能在Android设备上模拟串口终端,接收和发送数据,帮助开发者进行调试。 - 这些软件通常需要配合ADB(Android Debug Bridge)工具,通过USB连接将电脑和手机连接起来,实现串口通信。 4. **使用步骤**: - 连接设备:通过USB数据线将Android设备连接到电脑,并确保已开启USB调试模式。 - 配置权限:在设备上安装串口调试应用,并可能需要在开发者选项中启用USB调试和USB调试(MTP)。 - 驱动安装:电脑上可能需要安装对应的驱动程序,例如Google的Android USB驱动。 - 连接串口:在软件中选择正确的端口(通常是/dev/ttyUSB*或/dev/ttyACM*),设置波特率、数据位、校验位和停止位。 - 开始通信:现在可以开始发送和接收数据,观察设备与外设之间的通信情况。 5. **应用领域**: - IoT(物联网)开发:调试传感器、执行器或其他嵌入式设备。 - 设备固件更新:通过UART更新设备固件。 - 系统日志分析:查看并分析系统级别的日志,帮助诊断问题。 6. **注意事项**: - 安全性:使用串口调试时,要避免向设备发送错误命令,以免损坏硬件或导致系统不稳定。 - 兼容性:不同的设备和版本的Android系统可能对串口支持程度不同,需要确保软件与设备兼容。 - 防止数据丢失:在传输大量数据时,确保网络稳定,避免数据包丢失。 Android串口调试软件是开发者和硬件爱好者的重要工具,它能够帮助我们更好地理解设备的工作原理,排查问题,以及进行创新的硬件项目。通过上述的介绍,你应该对如何在Android设备上进行串口调试有了更深入的理解。
2025-11-13 17:25:35 633KB 安卓串口
1
合勤GS-4024支持RIP,OSPF路由协议,支持DVMRP,IGMP组播协议,具备RSTP,VRRP和Port Trunking的高效冗余和弹性架构,可选的备份电源系统,多层访问控制列表(L2/L3/L4),端口安全,静态MAC过滤以及端口MAC数目限制,针对网络或者校园应用的VLAN Stacking(QinQ),802.1x验证,ZyXEL专有iStacking:trade_mark:技术,汇聚网络管理,支持SNMP和RMON产品优势.
2025-11-13 17:24:53 8.59MB 网络
1
原版本升级,更稳定功能更强 感谢网友对Beta的意见反馈 一、 使用G-TcpClient模块 二、 可以设定间隔时间发起大规模长、短连接 三、 可以发起密集数据包,包括即时和定时发送 四、 数据发送工作由一个独立线程担当,连接发起工作可设置多个独立的线程担当。 五、 可以多种模式组合连接或发送数据。
2025-11-13 17:20:40 1.13MB IOCP TcpServer 完成端口 破连接限制
1
/******************************************************************************** * * * G-TcpClient:基于完成端口的Tcp客户端通讯模块(IOCP TcpClient) * * * * Copyright © 2009-2010 GuestCode 代码客(卢益贵) * * 版权所有 侵权必究 * * * * QQ:48092788 E-Mail:48092788@qq.com 源码博客:http://blog.csdn.net/guestcode * * * * GSN:34674B4D-1F63-11D3-B64C-11C04F79498E * * * ********************************************************************************/ #pragma once extern "C" { //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 类型定义 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #ifndef _GTYPE #define _GTYPE typedef unsigned char* PGBUF; typedef void(__stdcall *PGFN_ON_CONNECTED)(unsigned int unPerHandle, unsigned char* pBuf, unsigned int unLen); typedef void(__stdcall *PGFN_ON_RECEIVED)(unsigned int unPerHandle, unsigned char* pBuf, unsigned int unLen); typedef void(__stdcall *PGFN_ON_SENDED)(unsigned int unPerHandle, unsigned int unSendID, unsigned int unLen); typedef void(__stdcall *PGFN_ON_DISCONNECTED)(unsigned int unPerHandle, unsigned int unFlag); typedef void(__stdcall *PGFN_ON_THREAD)(unsigned int unThreadContext, unsigned int unThreadHandle, unsigned int unThreadID, BOOL bIsBegin, unsigned int unFlag); /* typedef struct _CONNECTION { unsigned int unPerHandle; }CONNECTION, *PCONNECTION; typedef void(__stdcall *PGFN_ON_CONNECTED)(unsigned int unPerHandle, unsigned char* pBuf, unsigned int unLen); typedef void(__stdcall *PGFN_ON_RECEIVED)(PCONNECTION pConnection, unsigned char* pBuf, unsigned int unLen); typedef void(__stdcall *PGFN_ON_SENDED)(PCONNECTION pConnection, unsigned int unSendID, unsigned int unLen); typedef void(__stdcall *PGFN_ON_DISCONNECTED)(PCONNECTION pConnection, unsigned int unFlag); void __stdcall GTcpClt_OnThread(unsigned int unThreadContext, unsigned int unThreadHandle, unsigned int unThreadID, BOOL bIsBegin, unsigned int unFlag) { } void __stdcall GTcpClt_OnConnected(unsigned int unPerHandle, void* _NULL, unsigned int unNULL) { } void __stdcall GTcpClt_OnReceived(PCONNECTION pConnection, unsigned char* pBuf, unsigned int unLen) { } void __stdcall GTcpClt_OnSended(PCONNECTION pConnection, unsigned int unSendID, unsigned int unLen) { } void __stdcall GTcpClt_OnDisconnected(PCONNECTION pConnection, unsigned int unFlag) { } */ #define _USE_UNICODE 1 #ifndef _DLL //#define _DLL #endif #ifdef _DLL #define DllExport _declspec(dllexport) #else #define DllExport #endif #define VER_FLAG_WIDE_CHAR 0x01 #define VER_FLAG_BETA 0x02 #define VER_FLAG_ZERO_READ 0x04 #define VER_FLAG_TRIAL 0x08 #define VER_FLAG_DEBUG 0x10 #define HNDS_CONNECT 1 #define HNDS_CONNECTED 2 #define HNDS_DISCONNECT 3 #endif //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 类型定义 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 版本信息 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #if(_USE_UNICODE) DllExport wchar_t* __stdcall GTcpClt_GetVersionName(void); #else DllExport char* __stdcall GTcpClt_GetVersionName(void); #endif DllExport float __stdcall GTcpClt_GetVersionNumber(void); DllExport unsigned int __stdcall GTcpClt_GetVersionFlag(void); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 版本信息 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 功能函数 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DllExport DWORDLONG __stdcall GTcpClt_GetPhyMemInfo(DWORDLONG* pdwTotal); #if(_USE_UNICODE) DllExport void __stdcall GTcpClt_WriteLog(wchar_t* pstrLog, unsigned int unCode = 0); DllExport void __stdcall GTcpClt_GetHostIP(wchar_t* pstrIP, unsigned int unLen, BOOL bIsInternetIP = FALSE); #else DllExport void __stdcall GTcpClt_WriteLog(char* pstrLog, unsigned int unCode = 0); DllExport void __stdcall GTcpClt_GetHostIP(char* pstrIP, unsigned int unLen, BOOL bIsInternetIP = FALSE); #endif //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 功能函数 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //>>>>>>>>>>>>>>>>>>>>>>>>>>>> PerIoData函数 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DllExport unsigned int __stdcall GTcpClt_GetGBufSize(void); DllExport unsigned int __stdcall GTcpClt_GetIoDataSize(void); DllExport unsigned int __stdcall GTcpClt_GetIoDataUse(void); DllExport unsigned int __stdcall GTcpClt_GetIoDataTotal(void); DllExport float __stdcall GTcpClt_GetIoDataUseRate(void); DllExport unsigned int __stdcall GTcpClt_GetIoDataUseMem(void); //<<<<<<<<<<<<<<<<<<<<<<<<<<<< PerIoData函数 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //>>>>>>>>>>>>>>>>>>>>>>>>>>>> PerHndData函数 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DllExport unsigned int __stdcall GTcpClt_GetHndDataUse(void); DllExport unsigned int __stdcall GTcpClt_GetHndDataTotal(void); DllExport unsigned int __stdcall GTcpClt_GetHndDataSize(void); DllExport float __stdcall GTcpClt_GetHndDataUseRate(void); DllExport unsigned int __stdcall GTcpClt_GetHndDataUseMem(void); //<<<<<<<<<<<<<<<<<<<<<<<<<<<< PerHndData函数 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 信息函数 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DllExport unsigned int __stdcall GTcpClt_GetThreadNumber(void); DllExport unsigned int __stdcall GTcpClt_GetPageSize(void); DllExport unsigned int __stdcall GTcpClt_GetBlockSize(void); DllExport unsigned int __stdcall GTcpClt_GetConnectCount(void); DllExport unsigned int __stdcall GTcpClt_GetThreadRunCount(unsigned int unThreadContext); DllExport unsigned int GTcpClt_GetState(unsigned int unPerHandle); #if(_USE_UNICODE) DllExport wchar_t* __stdcall GTcpClt_GetThreadName(unsigned int unThreadContext); DllExport BOOL __stdcall GTcpSock_GetPerHandleInfo(unsigned int unPerHandle, wchar_t* pstrIP, unsigned int unIPLen, wchar_t* pstrPort, unsigned int unPortLen); DllExport BOOL __stdcall GTcpSock_GetPerHandleName(unsigned int unPerHandle, wchar_t* pstrName, unsigned int unLen); #else DllExport char* __stdcall GTcpClt_GetThreadName(unsigned int unThreadContext); DllExport BOOL __stdcall GTcpSock_GetPerHandleInfo(unsigned int unPerHandle, char* pstrIP, unsigned int unIPLen, char* pstrPort, unsigned int unPortLen); DllExport BOOL __stdcall GTcpSock_GetPerHandleName(unsigned int unPerHandle, char* pstrName, unsigned int unLen); #endif DllExport unsigned int __stdcall GTcpClt_GetProcesserNumber(void); DllExport BOOL __stdcall GTcpClt_IsActive(); DllExport unsigned int __stdcall GTcpClt_GetUseMem(void); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 信息函数 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 操作函数 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DllExport void* __stdcall GTcpClt_GetPerHandleOwner(unsigned int unPerHandle); DllExport BOOL __stdcall GTcpClt_SetPerHandleOwner(unsigned int unPerHandle, void* pOwner); DllExport PGBUF __stdcall GTcpClt_AllocGBuf(void); DllExport BOOL __stdcall GTcpClt_FreeGBuf(PGBUF pGBuf); DllExport unsigned int __stdcall GTcpClt_PostSendGBuf(unsigned int unPerHandle, PGBUF pGBuf, unsigned int unLen); DllExport unsigned int __stdcall GTcpClt_PostSendBuf(unsigned int unPerHandle, unsigned char* pBuf, unsigned int unLen); DllExport void __stdcall GTcpClt_PostBroadcast(unsigned char* pBuf, unsigned int unLen); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 操作函数 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 主要函数 DllExport BOOL __stdcall GTcpClt_CloseConnect(unsigned int unPerHandle); #if(_USE_UNICODE) DllExport unsigned int __stdcall GTcpClt_OpenConnect( wchar_t* pstrRemoteIP, wchar_t* pstrRemotePort, wchar_t* pstrLocalIP, PGFN_ON_CONNECTED pfnOnConnected, PGFN_ON_RECEIVED pfnOnReceived, PGFN_ON_SENDED pfnOnSended, PGFN_ON_DISCONNECTED pfnOnDisconnected, void* pOwner = NULL); #else DllExport unsigned int __stdcall GTcpClt_OpenConnect( char* pstrRemoteIP, char* pstrRemotePort, char* pstrLocalIP, PGFN_ON_CONNECTED pfnOnConnected, PGFN_ON_RECEIVED pfnOnReceived, PGFN_ON_SENDED pfnOnSended, PGFN_ON_DISCONNECTED pfnOnDisconnected, void* pOwner = NULL); #endif DllExport BOOL __stdcall GTcpClt_Start(unsigned int unHeartbeatTime = 60, unsigned int unMaxNetDelayTime = 5, unsigned int unGuardThreadSleepTime = 2, PGFN_ON_THREAD pfnOnThread = NULL, unsigned int unHndDataInitNumber = 1000, unsigned int unIoDataInitNumber = 1500, unsigned int unProcesserThreadNumber = 0, unsigned int unWorkerThreadNumber = 0); DllExport void __stdcall GTcpClt_Stop(void); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 主要函数 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< } /* ... extern "C" */
2025-11-13 17:20:09 1.3MB
1