![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 60
龍城狂霸拽爺
殺馬特貴族
展开
-
字符串查找算法
const char* mstrstr(const char* srcstr,const char*findstr){int index = 0;assert((index = strlen(findstr) - 1) <=(strlen(srcstr) - 1)); int i,j;for(i = 0,j = index;srcstr[i] != 0;){if(find原创 2015-10-08 00:24:47 · 212 阅读 · 0 评论 -
完成端口(1)[转]
理解I/O CompletionPort(完成端口)欢迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇文章中提到的相关技术: I/O端口 同步/异步 堵塞/非堵塞 服务端/客户端原创 2015-10-08 00:22:55 · 223 阅读 · 0 评论 -
SOCKET编程登峰造极之完成端口(上)
一、什么是完成端口?完成端口---是一种WINDOWS内核对象。完成端口用于异步方式的重叠I/0情况下,当然重叠I/O不一定非使用完成端口不可,还有设备内核对象、事件对象、告警I/0等。但是完成端口内部提供了线程池的管理,可以避免反复创建线程的开销,同时可以根据CPU的个数灵活的决定线程个数,而且可以让减少线程调度的次数从而提高性能。 二、完成端口的内部机制1)创建完成端口完成端口是一原创 2015-10-08 00:22:42 · 485 阅读 · 0 评论 -
RasHangUp
RasHangUp RasHangUp 远程存取终结函数 (结尾附赠实例) RasHangUp函数终结一个远程存取连接,被终结的连接被HAS连接句柄指定,RasHangUp()函数释放所有的,跟该句柄关联的RASAPI32.DLL资源 函数原型: DWORD RasHangUp( HRASCONN Session ); 参数信息: Session原创 2015-10-08 00:22:29 · 608 阅读 · 0 评论 -
SOCKET 设置接受超时——getso…
原文地址:设置接受超时——getsockopt/setsockopt">SOCKET 设置接受超时——getsockopt/setsockopt作者:究竟是怎样的我int nNetTimeout=1000;//1秒 //发送时限setsockopt(socket,SOL_S0CKET,SO_SNDTIMEO,(char*)&nNetTimeout,sizeof(int)); //接收时限 s转载 2015-10-08 00:21:56 · 399 阅读 · 0 评论 -
setsockopt 设置socket 详细用法
setsockopt设置socket 详细用法1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(constchar*)&bReuseaddr,sizeof(BOOL));2.如果要已经处于连接状态的soke原创 2015-10-08 00:21:38 · 317 阅读 · 0 评论 -
KeyLogger
// Keyboard.cpp : Defines the entry point for the DLLapplication.////#include "stdafx.h"#include#includeHINSTANCE g_hInstance = NULL;HHOOK Kg_hHook = NULL;char Buff[10]= {0};#define DEBUG_LOG原创 2015-10-08 00:24:55 · 867 阅读 · 0 评论 -
波哥写的钩子教程4
钩子技术(六)来源: 任立波的日志方法5 : CBTProcFunctionThe CBTProc hook procedure is an application-defined orlibrary-defined callback function used with the SetWindowsHookExfunction. The system calls this fu原创 2015-10-08 00:24:14 · 495 阅读 · 0 评论 -
哥写的线程注入程序 可以在线程中…
#include #include int main(int argc, char** argv){ if(argc { fprintf(stdout,"\nUsage : %s\n\n",argv[0]); return 1; } DWORDPid,DllPathLen; if(sscanf(argv[1],原创 2015-10-08 00:23:56 · 301 阅读 · 0 评论 -
修改qt程序的图标(for windows)
修改qt程序的图标(for windows)20 07月, 2008 (17:52) | Cwith Qt4最近经常在windows写qt程序。编译完的qt程序图标是windows默认的应用程序图标,不好看。于是就想给它换一个,找了一下qt的帮助文档,里面有提到这个问题。方法也挺简单的:首先当然要有一个图标了,呵呵。把这个图标复制到程序的主目录下,姑且名字叫”myicon.ico”原创 2015-10-08 00:23:40 · 591 阅读 · 0 评论 -
mstcpip.h
// Copyright (C) Microsoft Corporation, 1996-1999#if _MSC_VER > 1000#pragma once#endif struct tcp_keepalive { u_longonoff; u_longkeepalivetime; u_longkeepaliveinterval;};// New W原创 2015-10-08 00:22:19 · 2400 阅读 · 0 评论 -
多线程服务器的常用编程模型
多线程服务器的常用编程模型作者: 陈硕 (3篇文章) 日期: 三月 24, 2010 在 6:23 下午本文主要讲我个人在多线程开发方面的一些粗浅经验。总结了一两种常用的线程模型,归纳了进程间通讯与线程同步的最佳实践,以期用简单规范的方式开发多线程程序。文中的“多线程服务器”是指运行在 Linux 操作系统上的独占式网络应用程序。硬件平台为 Intel x64 系列的多核CPU,单路或原创 2015-10-08 00:21:53 · 311 阅读 · 0 评论 -
一篇关于程序员性格的文章(…
软件开发中人们很少注意个人性格问题。自从1965年EdsgerDijkstra的有里程碑意义的文章“程序开发是一种人类活动”发表以来,程序员性格被认为是合理的和有成效的研究领域,虽然有些题目如“大桥建筑者的心理”和“对律师行为的研究实验”看起来可能是荒唐的,而在计算机领域,“计算机编程中的心理”和“对程序员行为的研究实验”等题目则是常见的。 每个领域的工程人员都知道工具和他们所用材料转载 2015-10-08 00:21:20 · 791 阅读 · 1 评论 -
漫谈信号与系统系列 (转载)
原文地址:(转载)">漫谈信号与系统系列 (转载)作者:lazyboy入门第一课 什么是卷积 傅利叶变换拉普拉斯变换漫谈 信号与系统 入门第一课 什么是卷积 卷积有什么用 什么是傅利叶变换 什么是拉普拉斯变换 引子----------------------------------------[引用和转载请注明本文blog出处,谢谢]很多朋友和我一样,工科电子类专业,学了一堆信号方面的课转载 2015-10-08 00:21:15 · 555 阅读 · 0 评论 -
Windows安装配置Gtk步骤
Windows安装配置Gtk步骤忽然心血来潮,又想鼓捣一下Gtk,因为没有安装Linux的PC可用,所以只好在Windows上玩玩了,记一下步骤,免得总忘,老了老了……步骤一:下载。1.Gtk官方网站:http://www.gtk.org/我选择了Bundle下载,链接为:http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.16/g原创 2015-10-08 00:23:20 · 1329 阅读 · 0 评论 -
Qt 静态库
编译准备下载NOKIA网站上的QT SDK,解压或安装到相关目录。本文以QT 4.6.2为例,下载地址:http://get.qt.nokia.com/qt/source/qt-win-opensource-4.6.2-vs2008.exe或者直接下载源码:http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.原创 2015-10-08 00:23:33 · 385 阅读 · 0 评论 -
vim+code_complete+ctags配置vim自…
vim code_completectags配置vim自动缩进函数补全环境需要软件vim 下载地址http://www.vim.orgcode_complete.vim 插件http://www.vim.org/scripts/script.php?script_id=1764ctags 一般安装完vim后都会有,ubuntu中好像是不支持,需要下原创 2015-10-08 00:23:46 · 393 阅读 · 0 评论 -
MCI 命令:(发送命令消息到指定的…
MCI 命令:(发送命令消息到指定的 MCI device. )[注]下面是我编程时看资料(主要是MSDN)的随手笔记,不全,随着日后的学习再进一步扩充吧。只是为了日后查找方便,可以很快回想起各种命令的用法。俗话说好记性不如烂笔头嘛:)MciSendCommand 命令格式: MCIERROR mciSendCommand( MCIDEVICEID IDDevice,//接受命令的设备ID,原创 2015-10-08 00:24:21 · 782 阅读 · 0 评论 -
API Hook完全手册
API Hook完全手册阅览次数: 今天:9 总浏览:8291文章来源: http://blog.csdn.net/atfield原文作者: ATField整理日期: 2008-07-16发表评论字体大小:小中大注:本文是根据我两年前写的一个系统行为监测程序写成(参考了一些书籍和文章)。最近在论坛上看到有不少人在问关于APIHook的问题,便写成此文,希望能对朋友们在写API原创 2015-10-08 00:24:16 · 287 阅读 · 0 评论 -
Windows管道技术简述
不知你是否用过这样的程序,他们本身并没有解压缩的功能,而是调用DOS程序PKZIP完成ZIP包的解压缩。但是在程序运行时又没有DOS控制台的窗口出现而且一切本应该在DOS下显示的信息都出现在了那个安装程序的一个文本框里。这种设计既美观又可以防止少数眼疾手快的用户提前关了你的DOS窗口。现在就来讨论一下,如何用匿名管道技术实现这个功能。管道技术由来已久,相信不少人对DOS命令里的管道技术最为熟原创 2015-10-08 00:22:39 · 329 阅读 · 0 评论 -
LCX源码 [转]
[code]#include #include #include #include #include #include #pragma comment(lib, "ws2_32.lib")#define VERSION "1.00"#define TIMEOUT 300#define MAXSIZE 20480#define HOSTLEN 40#define CONN原创 2015-10-08 00:22:34 · 351 阅读 · 0 评论 -
pthread线程库静态编译头文件 ..另…
#ifndef THREAD_ENV_H#define THREAD_ENV_H#define PTW32_STATIC_LIB#include #define PTHREAD_ENABLE_CANCEL{pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);pthread_setcanceltype(PTHREAD_CANCEL_AS原创 2015-10-08 00:21:45 · 827 阅读 · 0 评论 -
KMP字符串匹配算法
原文地址:KMP字符串匹配算法作者:沙子泥巴刘 昨天微创的第一题,我就用了最笨最傻的朴素匹配方法......一定被BS死了。我知道存在这么个KMP字符串匹配算法,但是具体内容却说不上来。今天查了半天,总算找到一个讲得比较清楚的了。转载网址:http://yxjoey.is-programmer.com/posts/1682.html 最笨的算法,无视此算法:int strstr(cha转载 2015-10-08 00:21:32 · 308 阅读 · 0 评论 -
一篇关于程序员性格的文章 …
5 交流和合作 真正优秀的程序员应学会怎样和别人工作和娱乐,编写可读代码是对程序员作为组中一员的要求之一。 计算机也就同其它人一样能读懂你的代码,但是它要比其它人更能阅读质量差的代码。作为可读性原则,你应将修改你的代码的人时刻记在心上。开发程序首先应同程序员交流,其次则是和计算机交流。 绝大多数高水平程序员喜欢使自己程序的可读性强,并抽出充足的时间这样作。虽然只有一转载 2015-10-08 00:21:22 · 755 阅读 · 0 评论 -
GDB调试精粹及使用实例
GDB调试精粹及使用实例来源:不详 (2006-07-14 11:18:05)一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符()和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前原创 2015-10-08 00:25:23 · 279 阅读 · 0 评论 -
我的群
原创 2015-10-08 00:23:30 · 326 阅读 · 0 评论 -
Ubuntu下GTK的安装
Ubuntu下GTK的安装apt-get install build-essential #这将安装gcc/g++/gdb/make等基本编程工具apt-get install gnome-core-devel #这将安装 libgtk2.0-devlibglib2.0-dev 等开发相关的库文件apt-get install pkg-config #用于在编译GTK程序时自动找出头文件原创 2015-10-08 00:23:15 · 338 阅读 · 0 评论 -
剖析SYN Flood攻击(1)
SYNFlood是当前最流行的DoS(拒绝服务攻击)与DdoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。 要明白这种攻击的基本原理,还是要从TCP连接建立的过程开始说起: 大家都知道,TCP与UDP不同,它是基于连接的,也就是说:为了在服务端和客户端之间传送TCP数据,必须先原创 2015-10-08 00:22:14 · 330 阅读 · 0 评论 -
ioctl参数详解
本函数影响由fd参数引用的一个打开的文件。#includeint ioctl( int fd, int request, ... );返回0:成功 -1:出错第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:套接口操作 文件操作 接口操作 ARP高速缓存操作 路由表操作 流系统下表列出了网络相关ioctl请原创 2015-10-08 00:21:48 · 1122 阅读 · 0 评论 -
技术总监谈好的程序员如何写代码
要判断一个程序员是不是好的程序员,主要看他写的代码,因为程序员最重要的事是写代码。 即便不去理解代码的意图,只要看一眼,好的程序员写的代码与差的程序员写的代码基本上就可以看出来。好的程序员写的代码,整洁而规范,视觉上自然有一种美感。空白错落有致,注释恰到好处,命名和排版遵守统一的规范。差的程序员写的代码则经常出现过长的函数,前后不一致的命名方式和排版,过深的嵌套结构,非常复杂的表原创 2015-10-08 00:21:27 · 317 阅读 · 0 评论 -
谈谈Qt的中文编码 又是转的
谈谈Qt的中文编码~ 本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容,并不得用于商业用途。谢谢合作。原文链接:http://www.cuteqt.com/blog/?p=531我的中文为什么没法显示?在Qt使用中经常有朋友会碰到这样的问题。通过google搜索,会发现已经有人解决过了,无非就是重新设置一原创 2015-10-08 00:21:10 · 318 阅读 · 0 评论 -
WinAPI: SetWindowsHookEx - 设置…
WinAPI:SetWindowsHookEx - 设置钩子提示: 如果要设置系统级钩子, 钩子函数必须在 DLL 中.SetWindowsHookEx( idHook: Integer; {钩子类型} lpfn: TFNHookProc; {函数指针} hmod: HINST; {包含钩子函数的模块(EXE、DLL)句柄; 一般是 HInstan原创 2015-10-08 00:24:24 · 364 阅读 · 0 评论 -
全局钩子详解
监控程序的实现 我们发现一些木马或其他病毒程序常常会将我们的键盘或鼠标的操作消息记录下来然后再将它发到他们指定的地方以实现监听.这种功能其他是利用了全局钩子将鼠标或键盘消息进行了截取,从而获得了操作的消息.要得到鼠标和键盘的控制权,我们要用SetWindowsHookEx这个函数: HHOOK SetWindowsHookEx( intidHook, //原创 2015-10-08 00:23:58 · 349 阅读 · 0 评论 -
标准C++类string的内存共享和Cop…
标准C++类std::string的内存共享和Copy-On-Write技术 陈皓1、 概念 Scott Meyers在《MoreEffective C++》中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事原创 2015-10-08 00:23:51 · 496 阅读 · 0 评论 -
如何添加一个 mingw gcc 编译的可…
答案首先,您需要创建一个 .rc文件,看起来是这样的:id ICON "path/to/my.ico"好,其实,我会假设您需要首先创建图标 … … 但不管怎么说 … … ID可以漂亮的很多东西。除非您想要在您的代码中引用它也没关系。然后运行 windres,如下所示:windres my.rc -O coff -o my.res然后你只包括 my.res 随您的对象文件链接时原创 2015-10-08 00:23:43 · 268 阅读 · 0 评论 -
Qt静态库终于TNND编译出来了.....
我用Qt 4.6.2 SDK 今天终于把静态编译搞好了!!!!下面记录下我是咋搞好的先去装 4.6.2 SDK http://get.qt.nokia.com/qtsdk/qt-sdk-win-opensource-2010.02.1.exe(4.6.3的有毛病)把 安装目录\qt\src\script\tmp\moc\debug_shared 和\qt\src\script\t原创 2015-10-08 00:23:36 · 797 阅读 · 0 评论 -
c++中主要有四种强制转换类型运算…
标准c++中主要有四种强制转换类型运算符: const_cast,reinterpret_cast,static_cast,dynamic_cast等等。 1)static_cast(a) 将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。 表达式static_cast(a),a的值转换为模板中指定的类型T。在运行时转换过原创 2015-10-08 00:23:10 · 363 阅读 · 0 评论 -
完成端口(2) [转]
相信只要写过网络的朋友,应该对这样的结构在熟悉不过了。accept后线程被挂起,等待一个客户发出请求,而后创建新线程来处理请求。当新线程处理客户请求时,起初的线程循环回去等待另一个客户请求。处理客户请求的线程处理完毕后终结。 在上述的并发模型中,对每个客户请求都创建了一个线程。其优点在于等待请求的线程只需做很少的工作。大多数时间中,该线程在休眠[因为recv处于堵塞状态]。 但原创 2015-10-08 00:22:58 · 210 阅读 · 0 评论 -
在VB 中调用动态连接库
作为一种简单易用的Windows开发环境,Visual Basic从一推出就受到了广大编程人员的欢迎。它使程序员不必再直接面对纷繁复杂的Windows消息,而可以将精力主要集中在程序功能的实现上,大大提高了编程效率。但凡事有利必有弊。VB中高度的封装和模块化减轻了编程者的负担,同时也使开发人员失去了许多访问低层API函数和直接与Windows交互的机会。因此,相比而言,VB应用程序的执行效率和功原创 2015-10-08 00:22:44 · 452 阅读 · 0 评论 -
WIN C++ API
Windows C++ API函数大全1. API之网络函数 WNetAddConnection创建同一个网络资源的永久性连接 WNetAddConnection2创建同一个网络资源的连接 WNetAddConnection3创建同一个网络资源的连接 WNetCancelConnection结束一个网络连接 WNetCancelConnection2结束一个网络连原创 2015-10-08 00:22:27 · 322 阅读 · 0 评论