锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久人人爽人爽人人爽av,久久99久久成人免费播放,伊人久久大香线蕉成人http://www.shnenglu.com/xvsdf100/zh-cnTue, 06 May 2025 16:11:19 GMTTue, 06 May 2025 16:11:19 GMT60涓轟粈涔堝畨瑁卽buntu 12.04.3 wubi鎵句笉鍒伴暅鍍忥紒錛侊紒http://www.shnenglu.com/xvsdf100/archive/2013/12/18/204880.html灝忛奔鍎?/dc:creator>灝忛奔鍎?/author>Wed, 18 Dec 2013 14:46:00 GMThttp://www.shnenglu.com/xvsdf100/archive/2013/12/18/204880.htmlhttp://www.shnenglu.com/xvsdf100/comments/204880.htmlhttp://www.shnenglu.com/xvsdf100/archive/2013/12/18/204880.html#Feedback0http://www.shnenglu.com/xvsdf100/comments/commentRss/204880.htmlhttp://www.shnenglu.com/xvsdf100/services/trackbacks/204880.html鎴戝紑濮嬩笅杞?2浣嶇殑錛岀劧鍚庢妸閲岄潰鐨剋ubi鎷瘋礉鍑烘潵錛屽潙鐖瑰敖鐒舵槸12.04.1 鎵浠ユ壘涓嶅埌銆傘?br />鐒跺悗鎴戝埌緗戜笂鎵?2.04.3 32浣嶏紝銆傘傘傘?鎵句笉鍒般傘傘傘傘傘傚埌瀹樼綉鍙兘64浣嶃傘傘?br />鍚庨潰鍙兘涓嬭澆64涓虹敤榪欎釜wubi 瀹夎鎴愬姛銆傘傘?br />涓嶅鏄撳晩銆傘傘傘傘?img src ="http://www.shnenglu.com/xvsdf100/aggbug/204880.html" width = "1" height = "1" />

]]>
瀹㈡埛绔笉鍋滅殑鍙戦佹暟鎹細瀵規湇鍔″櫒鏈変粈涔堝獎鍝嶏紵錛堜竴涓繛鎺ヤ笂錛?/title><link>http://www.shnenglu.com/xvsdf100/archive/2013/12/18/204879.html</link><dc:creator>灝忛奔鍎?/dc:creator><author>灝忛奔鍎?/author><pubDate>Wed, 18 Dec 2013 14:26:00 GMT</pubDate><guid>http://www.shnenglu.com/xvsdf100/archive/2013/12/18/204879.html</guid><wfw:comment>http://www.shnenglu.com/xvsdf100/comments/204879.html</wfw:comment><comments>http://www.shnenglu.com/xvsdf100/archive/2013/12/18/204879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/xvsdf100/comments/commentRss/204879.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xvsdf100/services/trackbacks/204879.html</trackback:ping><description><![CDATA[榪欎釜闂鎴戞槸鍦ㄨ鍧涚湅鍒扮殑綾諱技鐨勯棶棰橈紝褰撴椂鍥炲浜嗕粬銆傘傚悗闈粩緇嗘兂鎯沖張濂藉儚鑷繁涔熶笉鏄お娓呮銆傚鏄張鐪嬩簡涓涓媡cp/ip璇﹁В銆傘傘傘?br />欏轟究鑷繁鍋氫簡涓涓嬪疄楠岋紝鍙戠幇鍙戦佷竴浜涙暟鎹悗瀹㈡埛绔氨鍗℃浜嗭紙闃誨濂楁帴瀛楋級錛屾湇鍔″櫒鍙帴鍙楄繛鎺ワ紝涓嶅彇鍑虹郴緇熺紦瀛樼殑鏁版嵁銆?br /><br />鎴戞兂浼拌鏄湇鍔″櫒鐨勫搴斿鎺ュ瓧鐨刡uffer鐢ㄥ畬浜嗭紝鎵浠ュ唴鏍鎬笉鍦ㄦ帴鏀舵暟鎹簡錛屽鑷村鎴風涓嶈兘澶熷彂閫佹暟鎹傞偅榪欐牱鐪嬫潵錛屽鎴風鎯充笉鍋滅殑鍙戦佹暟鎹紝鍙湁涓嶆柇寤虹珛榪炴帴鎵嶅彲浠ワ紝鍦ㄤ竴涓繛鎺ヤ笉鍋滃彂閫佹暟鎹槸涓嶈兘鐨勪簨鎯呫?br /><br />鍚庨潰鐪嬩簡涓涓媌uffer 鍜?紿楀彛澶ф綾諱技錛屼絾涓嶇瓑浜庝竴浼氫簨銆?br />姣斿柣鏈満涓婄獥鍙f槸25000錛屼絾鎺ユ敹buffer 8192..  鑰屼笖鐪媡cp/ip 2璨屼技buffer榪樻槸鍙互鎻愰珮浠栫殑涓婇檺銆?br /><br />浠ュ墠瑙夊緱socket send 璨屼技灝辯瓑浜巘cp/ip鍗忚錛岀幇鍦ㄧ湅鏉ョ湡濂藉偦錛屽ソ澶╃湡銆傘?br />socket 鍑芥暟鍙槸鎻掑彛灞傘傘備互鍓嶄笉鏄庣櫧涓轟粈涔堟彃鍙o紝鐜板湪鏄庣櫧浜嗭紝灝辨槸鐢ㄥ簲鐢ㄥ眰閽ュ寵錛岄氳繃榪欐妸閽ュ寵鏉ヨ窡涓嬮潰鍗忚鎵撲氦閬撱傘?br /><img src ="http://www.shnenglu.com/xvsdf100/aggbug/204879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xvsdf100/" target="_blank">灝忛奔鍎?/a> 2013-12-18 22:26 <a href="http://www.shnenglu.com/xvsdf100/archive/2013/12/18/204879.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浣犵湡鐨勬噦select鍚楋紵錛?/title><link>http://www.shnenglu.com/xvsdf100/archive/2013/12/10/204689.html</link><dc:creator>灝忛奔鍎?/dc:creator><author>灝忛奔鍎?/author><pubDate>Tue, 10 Dec 2013 06:20:00 GMT</pubDate><guid>http://www.shnenglu.com/xvsdf100/archive/2013/12/10/204689.html</guid><wfw:comment>http://www.shnenglu.com/xvsdf100/comments/204689.html</wfw:comment><comments>http://www.shnenglu.com/xvsdf100/archive/2013/12/10/204689.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/xvsdf100/comments/commentRss/204689.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xvsdf100/services/trackbacks/204689.html</trackback:ping><description><![CDATA[   鍙鎺ヨЕ榪嘽/c++緗戣礬緙栫▼浜洪兘鍙兘浼氱煡閬搒elect io 妯″紡錛岀綉緇滀功綾嶉兘璇?fd_set {int num; SOCKET arr[64]} 鏈夋墍闄愬埗錛屽洜涓烘暟緇勭殑闀垮害鍙湁64錛岄偅涔堣秴榪?4浣犲氨涓嶈兘鏀撅紝瑕佷箞浣犲氨鏄敤澶氱嚎紼嬪垎鍒疄鐢╯elect.銆?br /> 涓浜涗功綾嶉氳繃鏀瑰畾涔夊畯 浣挎暟緇勭殑闀垮害鍙橀暱錛屼絾涔熶笉瀹炵敤錛屼笉鑳藉姩鎬佺殑鍙樺寲錛屾垜鎬諱笉鑳藉畾涓涓潪甯哥殑闀跨殑闀垮害錛屾瘯绔熸槸鍦ㄦ爤涓娿?br />    鎴戝氨鍦ㄦ兂閭d箞select瀹屽叏鍙兘鍦ㄥ鎴風浣跨敤錛岃屼笖濂楁帴瀛楄繕涓嶈兘瓚呰繃64銆傞偅榪欎笉灝辨槸涓涓蔣鑲嬪悧錛燂紵涓鐩村榪欎釜鏈変竴涓糠鎯戙傘傘傘傘?br /> <br />    鍚庢潵錛岃嚜宸辯湅鍒頒簡libevent鐨勬簮浠g爜鍙戠幇浠栦篃鐢ㄧ殑鏄痵elect銆傘傜湅鍒漢璇磋繖涓簱錛岃交杞繪澗鏉懼鐞嗕笂涓囦釜濂楁帴瀛楋紝鎴戝氨鍦ㄦ兂select涓嶆槸鏈夐檺鍒跺悧錛燂紵浠栨槸鎬庝箞鍋氬埌銆傘傘傘傘傘?br /> 鐪嬩簡婧愪唬鐮侊紝鎴戞槑鐧戒簡銆備粬鍙槸鐢ㄥ涓婂瓨鏀維OCKET鐨勫彞鏌勩傘傛垜浠湅涓涓嬩粬鐨勬柊瀹氫箟緇撴瀯浣撱?br /> <br /> <div>struct win_fd_set {</div> <div><span style="white-space:pre"> </span>u_int fd_count;</div> <div><span style="white-space:pre"> </span>SOCKET fd_array[1];</div> <div>};<br /> <br /> 榪欎釜灝辨槸鏂板畾涔夌粨鏋勪綋錛岃窡鍘熸潵紼嶅井鏈夌偣鍙樺寲鍙槸鎶?4鏀逛負1錛屾湁浜涘悓瀛﹀彲鑳借澶氬緢澶氳繖鏍風殑鍐欐硶錛岃繖縐嶅啓娉曟垜涔熷湪涓浜涢」鐩嬌鐢ㄤ簡銆傝繖縐嶅啓娉曞彲浠d_array鍔ㄦ佸彉鍖栥?br /> win_fd_set * Set = (win_fd_set*)malloc(sizeof(win_fd_set) + sizoef(SCOEKT) * 10);<br /> Set->fd_array 鍙互鏀?1 涓?SOCKET錛屽洜涓烘垜鐨勫唴瀛樺ぇ灝忚凍澶熸斁11涓猄OCKET銆?br /> 璇瘋浣忓唴瀛樻槸娌℃湁鏁版嵁鏍煎紡錛屽彧瑕佽凍澶熷ぇ灝忥紝闅忎究浣犳庝箞鏀俱傛暟鎹牸寮忓彧鏄柟渚挎垜浠鐞嗗拰澶勭悊鏁版嵁鑰屽凡銆?br /> 榪欐牱灝辮В鍐?4涓ぇ灝忛檺鍒躲傘傛垜鍏跺疄涓鐩村緢濂藉涓轟粈涔堜腑鍥戒功綾嶉兘鏄竴鏍風殑錛宭ibevent宸茬粡鍑烘潵濂戒箙浜嗭紝浣嗕篃娌℃湁鐪嬪埌鏈変漢璇磋繖涓鐐癸紝鍙兘鏄珮鎵嬩滑閮戒笉灞戙?br /> 鐜板湪娓愭笎鍠滄鐪嬪紑婧愮殑浠g爜錛屼笉鍠滄鐪嬩功綾嶄簡錛屽枩嬈㈠湪浠g爜涓涔犱粬浠槸鎬庝箞緇勭粐涓涓ソ欏圭洰銆?br /> 鏈夋椂鍊欐劅鎱細<span style="color: red;">楂樻墜鐢╟ 鍐欑潃婕備寒鐨刢++浠g爜錛岃屾垜絳夎彍楦熷嵈鐢╟++ 鍐欎笐闄嬬殑c浠g爜銆傘?/span><br /> <br /> 鎴戦『渚挎妸浠栨暣涓畾涔夌粨鏋勫拰鍑芥暟緇欏ぇ瀹惰創鍑烘潵錛屽厤澶у榪樿鑷繁鍘諱笅libevent錛屼笉榪囨帹鑽愭病鏈夌湅榪噇ibevent鍚屽錛屽彲浠ョ◢寰湅涓涓嬨?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080; ">  1</span> <span style="color: #0000FF; ">volatile</span> <span style="color: #0000FF; ">double</span> SIGFPE_REQ = 0.0f;<br /> <span style="color: #008080; ">  2</span> <br /> <span style="color: #008080; ">  3</span> <span style="color: #0000FF; ">struct</span> idx_info {<br /> <span style="color: #008080; ">  4</span>     <span style="color: #0000FF; ">int</span> read_pos_plus1;<br /> <span style="color: #008080; ">  5</span>     <span style="color: #0000FF; ">int</span> write_pos_plus1;<br /> <span style="color: #008080; ">  6</span> };<br /> <span style="color: #008080; ">  7</span> <br /> <span style="color: #008080; ">  8</span> <span style="color: #0000FF; ">struct</span> win32op {<br /> <span style="color: #008080; ">  9</span>     unsigned num_fds_in_fd_sets;<br /> <span style="color: #008080; "> 10</span>     <span style="color: #0000FF; ">int</span> resize_out_sets;<br /> <span style="color: #008080; "> 11</span>     <span style="color: #0000FF; ">struct</span> win_fd_set *readset_in;<br /> <span style="color: #008080; "> 12</span>     <span style="color: #0000FF; ">struct</span> win_fd_set *writeset_in;<br /> <span style="color: #008080; "> 13</span>     <span style="color: #0000FF; ">struct</span> win_fd_set *readset_out;<br /> <span style="color: #008080; "> 14</span>     <span style="color: #0000FF; ">struct</span> win_fd_set *writeset_out;<br /> <span style="color: #008080; "> 15</span>     <span style="color: #0000FF; ">struct</span> win_fd_set *exset_out;<br /> <span style="color: #008080; "> 16</span>     unsigned signals_are_broken : 1;<br /> <span style="color: #008080; "> 17</span> };<br /> <span style="color: #008080; "> 18</span> <br /> <span style="color: #008080; "> 19</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">void</span> *win32_init(<span style="color: #0000FF; ">struct</span> event_base *);<br /> <span style="color: #008080; "> 20</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">int</span> win32_add(<span style="color: #0000FF; ">struct</span> event_base *, evutil_socket_t, <span style="color: #0000FF; ">short</span> old, <span style="color: #0000FF; ">short</span> events, <span style="color: #0000FF; ">void</span> *_idx);<br /> <span style="color: #008080; "> 21</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">int</span> win32_del(<span style="color: #0000FF; ">struct</span> event_base *, evutil_socket_t, <span style="color: #0000FF; ">short</span> old, <span style="color: #0000FF; ">short</span> events, <span style="color: #0000FF; ">void</span> *_idx);<br /> <span style="color: #008080; "> 22</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">int</span> win32_dispatch(<span style="color: #0000FF; ">struct</span> event_base *<span style="color: #0000FF; ">base</span>, <span style="color: #0000FF; ">struct</span> timeval *);<br /> <span style="color: #008080; "> 23</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">void</span> win32_dealloc(<span style="color: #0000FF; ">struct</span> event_base *);<br /> <span style="color: #008080; "> 24</span> <br /> <span style="color: #008080; "> 25</span> <span style="color: #0000FF; ">struct</span> eventop win32ops = {<br /> <span style="color: #008080; "> 26</span>     "win32",<br /> <span style="color: #008080; "> 27</span>     win32_init,<br /> <span style="color: #008080; "> 28</span>     win32_add,<br /> <span style="color: #008080; "> 29</span>     win32_del,<br /> <span style="color: #008080; "> 30</span>     win32_dispatch,<br /> <span style="color: #008080; "> 31</span>     win32_dealloc,<br /> <span style="color: #008080; "> 32</span>     0, <span style="color: #008000; ">/*</span><span style="color: #008000; "> doesn't need reinit </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; "> 33</span>     0, <span style="color: #008000; ">/*</span><span style="color: #008000; "> No features supported. </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; "> 34</span>     <span style="color: #0000FF; ">sizeof</span>(<span style="color: #0000FF; ">struct</span> idx_info),<br /> <span style="color: #008080; "> 35</span> };<br /> <span style="color: #008080; "> 36</span> <br /> <span style="color: #008080; "> 37</span> <span style="color: #0000FF; ">#define</span> FD_SET_ALLOC_SIZE(n) ((sizeof(struct win_fd_set) + ((n)-1)*sizeof(SOCKET)))<br /> <span style="color: #008080; "> 38</span> <br /> <span style="color: #008080; "> 39</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">int</span><br /> <span style="color: #008080; "> 40</span> grow_fd_sets(<span style="color: #0000FF; ">struct</span> win32op *op, unsigned new_num_fds)<br /> <span style="color: #008080; "> 41</span> {<br /> <span style="color: #008080; "> 42</span>     size_t size;<br /> <span style="color: #008080; "> 43</span> <br /> <span style="color: #008080; "> 44</span>     EVUTIL_ASSERT(new_num_fds >= op->readset_in->fd_count &&<br /> <span style="color: #008080; "> 45</span>            new_num_fds >= op->writeset_in->fd_count);<br /> <span style="color: #008080; "> 46</span>     EVUTIL_ASSERT(new_num_fds >= 1);<br /> <span style="color: #008080; "> 47</span> <br /> <span style="color: #008080; "> 48</span>     size = FD_SET_ALLOC_SIZE(new_num_fds);<br /> <span style="color: #008080; "> 49</span>     <span style="color: #0000FF; ">if</span> (!(op->readset_in = mm_realloc(op->readset_in, size)))<br /> <span style="color: #008080; "> 50</span>         <span style="color: #0000FF; ">return</span> (-1);<br /> <span style="color: #008080; "> 51</span>     <span style="color: #0000FF; ">if</span> (!(op->writeset_in = mm_realloc(op->writeset_in, size)))<br /> <span style="color: #008080; "> 52</span>         <span style="color: #0000FF; ">return</span> (-1);<br /> <span style="color: #008080; "> 53</span>     op->resize_out_sets = 1;<br /> <span style="color: #008080; "> 54</span>     op->num_fds_in_fd_sets = new_num_fds;<br /> <span style="color: #008080; "> 55</span>     <span style="color: #0000FF; ">return</span> (0);<br /> <span style="color: #008080; "> 56</span> }<br /> <span style="color: #008080; "> 57</span> <br /> <span style="color: #008080; "> 58</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">int</span><br /> <span style="color: #008080; "> 59</span> do_fd_set(<span style="color: #0000FF; ">struct</span> win32op *op, <span style="color: #0000FF; ">struct</span> idx_info *ent, evutil_socket_t s, <span style="color: #0000FF; ">int</span> read)<br /> <span style="color: #008080; "> 60</span> {<br /> <span style="color: #008080; "> 61</span>     <span style="color: #0000FF; ">struct</span> win_fd_set *<span style="color: #0000FF; ">set</span> = read ? op->readset_in : op->writeset_in;<br /> <span style="color: #008080; "> 62</span>     <span style="color: #0000FF; ">if</span> (read) {<br /> <span style="color: #008080; "> 63</span>         <span style="color: #0000FF; ">if</span> (ent->read_pos_plus1 > 0)<br /> <span style="color: #008080; "> 64</span>             <span style="color: #0000FF; ">return</span> (0);<br /> <span style="color: #008080; "> 65</span>     } <span style="color: #0000FF; ">else</span> {<br /> <span style="color: #008080; "> 66</span>         <span style="color: #0000FF; ">if</span> (ent->write_pos_plus1 > 0)<br /> <span style="color: #008080; "> 67</span>             <span style="color: #0000FF; ">return</span> (0);<br /> <span style="color: #008080; "> 68</span>     }<br /> <span style="color: #008080; "> 69</span>     <span style="color: #0000FF; ">if</span> (<span style="color: #0000FF; ">set</span>->fd_count == op->num_fds_in_fd_sets) {<br /> <span style="color: #008080; "> 70</span>         <span style="color: #0000FF; ">if</span> (grow_fd_sets(op, op->num_fds_in_fd_sets*2))<br /> <span style="color: #008080; "> 71</span>             <span style="color: #0000FF; ">return</span> (-1);<br /> <span style="color: #008080; "> 72</span>         <span style="color: #008000; ">/*</span><span style="color: #008000; "> set pointer will have changed and needs reiniting! </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; "> 73</span>         <span style="color: #0000FF; ">set</span> = read ? op->readset_in : op->writeset_in;<br /> <span style="color: #008080; "> 74</span>     }<br /> <span style="color: #008080; "> 75</span>     <span style="color: #0000FF; ">set</span>->fd_array[<span style="color: #0000FF; ">set</span>->fd_count] = s;<br /> <span style="color: #008080; "> 76</span>     <span style="color: #0000FF; ">if</span> (read)<br /> <span style="color: #008080; "> 77</span>         ent->read_pos_plus1 = <span style="color: #0000FF; ">set</span>->fd_count+1;<br /> <span style="color: #008080; "> 78</span>     <span style="color: #0000FF; ">else</span><br /> <span style="color: #008080; "> 79</span>         ent->write_pos_plus1 = <span style="color: #0000FF; ">set</span>->fd_count+1;<br /> <span style="color: #008080; "> 80</span>     <span style="color: #0000FF; ">return</span> (<span style="color: #0000FF; ">set</span>->fd_count++);<br /> <span style="color: #008080; "> 81</span> }<br /> <span style="color: #008080; "> 82</span> <br /> <span style="color: #008080; "> 83</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">int</span><br /> <span style="color: #008080; "> 84</span> do_fd_clear(<span style="color: #0000FF; ">struct</span> event_base *<span style="color: #0000FF; ">base</span>,<br /> <span style="color: #008080; "> 85</span>             <span style="color: #0000FF; ">struct</span> win32op *op, <span style="color: #0000FF; ">struct</span> idx_info *ent, <span style="color: #0000FF; ">int</span> read)<br /> <span style="color: #008080; "> 86</span> {<br /> <span style="color: #008080; "> 87</span>     <span style="color: #0000FF; ">int</span> i;<br /> <span style="color: #008080; "> 88</span>     <span style="color: #0000FF; ">struct</span> win_fd_set *<span style="color: #0000FF; ">set</span> = read ? op->readset_in : op->writeset_in;<br /> <span style="color: #008080; "> 89</span>     <span style="color: #0000FF; ">if</span> (read) {<br /> <span style="color: #008080; "> 90</span>         i = ent->read_pos_plus1 - 1;<br /> <span style="color: #008080; "> 91</span>         ent->read_pos_plus1 = 0;<br /> <span style="color: #008080; "> 92</span>     } <span style="color: #0000FF; ">else</span> {<br /> <span style="color: #008080; "> 93</span>         i = ent->write_pos_plus1 - 1;<br /> <span style="color: #008080; "> 94</span>         ent->write_pos_plus1 = 0;<br /> <span style="color: #008080; "> 95</span>     }<br /> <span style="color: #008080; "> 96</span>     <span style="color: #0000FF; ">if</span> (i < 0)<br /> <span style="color: #008080; "> 97</span>         <span style="color: #0000FF; ">return</span> (0);<br /> <span style="color: #008080; "> 98</span>     <span style="color: #0000FF; ">if</span> (--<span style="color: #0000FF; ">set</span>->fd_count != (unsigned)i) {<br /> <span style="color: #008080; "> 99</span>         <span style="color: #0000FF; ">struct</span> idx_info *ent2;<br /> <span style="color: #008080; ">100</span>         SOCKET s2;<br /> <span style="color: #008080; ">101</span>         s2 = <span style="color: #0000FF; ">set</span>->fd_array[i] = <span style="color: #0000FF; ">set</span>->fd_array[<span style="color: #0000FF; ">set</span>->fd_count];<br /> <span style="color: #008080; ">102</span> <br /> <span style="color: #008080; ">103</span>         ent2 = evmap_io_get_fdinfo(&<span style="color: #0000FF; ">base</span>->io, s2);<br /> <span style="color: #008080; ">104</span> <br /> <span style="color: #008080; ">105</span>         <span style="color: #0000FF; ">if</span> (!ent2) <span style="color: #008000; ">/*</span><span style="color: #008000; "> This indicates a bug. </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; ">106</span>             <span style="color: #0000FF; ">return</span> (0);<br /> <span style="color: #008080; ">107</span>         <span style="color: #0000FF; ">if</span> (read)<br /> <span style="color: #008080; ">108</span>             ent2->read_pos_plus1 = i+1;<br /> <span style="color: #008080; ">109</span>         <span style="color: #0000FF; ">else</span><br /> <span style="color: #008080; ">110</span>             ent2->write_pos_plus1 = i+1;<br /> <span style="color: #008080; ">111</span>     }<br /> <span style="color: #008080; ">112</span>     <span style="color: #0000FF; ">return</span> (0);<br /> <span style="color: #008080; ">113</span> }<br /> <span style="color: #008080; ">114</span> <br /> <span style="color: #008080; ">115</span> <span style="color: #0000FF; ">#define</span> NEVENT 32<br /> <span style="color: #008080; ">116</span> <span style="color: #0000FF; ">void</span> *<br /> <span style="color: #008080; ">117</span> win32_init(<span style="color: #0000FF; ">struct</span> event_base *_base)<br /> <span style="color: #008080; ">118</span> {<br /> <span style="color: #008080; ">119</span>     <span style="color: #0000FF; ">struct</span> win32op *winop;<br /> <span style="color: #008080; ">120</span>     size_t size;<br /> <span style="color: #008080; ">121</span>     <span style="color: #0000FF; ">if</span> (!(winop = mm_calloc(1, <span style="color: #0000FF; ">sizeof</span>(<span style="color: #0000FF; ">struct</span> win32op))))<br /> <span style="color: #008080; ">122</span>         <span style="color: #0000FF; ">return</span> NULL;<br /> <span style="color: #008080; ">123</span>     winop->num_fds_in_fd_sets = NEVENT;<br /> <span style="color: #008080; ">124</span>     size = FD_SET_ALLOC_SIZE(NEVENT);<br /> <span style="color: #008080; ">125</span>     <span style="color: #0000FF; ">if</span> (!(winop->readset_in = mm_malloc(size)))<br /> <span style="color: #008080; ">126</span>         <span style="color: #0000FF; ">goto</span> err;<br /> <span style="color: #008080; ">127</span>     <span style="color: #0000FF; ">if</span> (!(winop->writeset_in = mm_malloc(size)))<br /> <span style="color: #008080; ">128</span>         <span style="color: #0000FF; ">goto</span> err;<br /> <span style="color: #008080; ">129</span>     <span style="color: #0000FF; ">if</span> (!(winop->readset_out = mm_malloc(size)))<br /> <span style="color: #008080; ">130</span>         <span style="color: #0000FF; ">goto</span> err;<br /> <span style="color: #008080; ">131</span>     <span style="color: #0000FF; ">if</span> (!(winop->writeset_out = mm_malloc(size)))<br /> <span style="color: #008080; ">132</span>         <span style="color: #0000FF; ">goto</span> err;<br /> <span style="color: #008080; ">133</span>     <span style="color: #0000FF; ">if</span> (!(winop->exset_out = mm_malloc(size)))<br /> <span style="color: #008080; ">134</span>         <span style="color: #0000FF; ">goto</span> err;<br /> <span style="color: #008080; ">135</span>     winop->readset_in->fd_count = winop->writeset_in->fd_count = 0;<br /> <span style="color: #008080; ">136</span>     winop->readset_out->fd_count = winop->writeset_out->fd_count<br /> <span style="color: #008080; ">137</span>         = winop->exset_out->fd_count = 0;<br /> <span style="color: #008080; ">138</span> <br /> <span style="color: #008080; ">139</span>     <span style="color: #0000FF; ">if</span> (evsig_init(_base) < 0)<br /> <span style="color: #008080; ">140</span>         winop->signals_are_broken = 1;<br /> <span style="color: #008080; ">141</span> <br /> <span style="color: #008080; ">142</span>     <span style="color: #0000FF; ">return</span> (winop);<br /> <span style="color: #008080; ">143</span>  err:<br /> <span style="color: #008080; ">144</span>     XFREE(winop->readset_in);<br /> <span style="color: #008080; ">145</span>     XFREE(winop->writeset_in);<br /> <span style="color: #008080; ">146</span>     XFREE(winop->readset_out);<br /> <span style="color: #008080; ">147</span>     XFREE(winop->writeset_out);<br /> <span style="color: #008080; ">148</span>     XFREE(winop->exset_out);<br /> <span style="color: #008080; ">149</span>     XFREE(winop);<br /> <span style="color: #008080; ">150</span>     <span style="color: #0000FF; ">return</span> (NULL);<br /> <span style="color: #008080; ">151</span> }<br /> <span style="color: #008080; ">152</span> <br /> <span style="color: #008080; ">153</span> <span style="color: #0000FF; ">int</span><br /> <span style="color: #008080; ">154</span> win32_add(<span style="color: #0000FF; ">struct</span> event_base *<span style="color: #0000FF; ">base</span>, evutil_socket_t fd,<br /> <span style="color: #008080; ">155</span>              <span style="color: #0000FF; ">short</span> old, <span style="color: #0000FF; ">short</span> events, <span style="color: #0000FF; ">void</span> *_idx)<br /> <span style="color: #008080; ">156</span> {<br /> <span style="color: #008080; ">157</span>     <span style="color: #0000FF; ">struct</span> win32op *win32op = <span style="color: #0000FF; ">base</span>->evbase;<br /> <span style="color: #008080; ">158</span>     <span style="color: #0000FF; ">struct</span> idx_info *idx = _idx;<br /> <span style="color: #008080; ">159</span> <br /> <span style="color: #008080; ">160</span>     <span style="color: #0000FF; ">if</span> ((events & EV_SIGNAL) && win32op->signals_are_broken)<br /> <span style="color: #008080; ">161</span>         <span style="color: #0000FF; ">return</span> (-1);<br /> <span style="color: #008080; ">162</span> <br /> <span style="color: #008080; ">163</span>     <span style="color: #0000FF; ">if</span> (!(events & (EV_READ|EV_WRITE)))<br /> <span style="color: #008080; ">164</span>         <span style="color: #0000FF; ">return</span> (0);<br /> <span style="color: #008080; ">165</span> <br /> <span style="color: #008080; ">166</span>     event_debug(("%s: adding event for %d", __func__, (<span style="color: #0000FF; ">int</span>)fd));<br /> <span style="color: #008080; ">167</span>     <span style="color: #0000FF; ">if</span> (events & EV_READ) {<br /> <span style="color: #008080; ">168</span>         <span style="color: #0000FF; ">if</span> (do_fd_set(win32op, idx, fd, 1)<0)<br /> <span style="color: #008080; ">169</span>             <span style="color: #0000FF; ">return</span> (-1);<br /> <span style="color: #008080; ">170</span>     }<br /> <span style="color: #008080; ">171</span>     <span style="color: #0000FF; ">if</span> (events & EV_WRITE) {<br /> <span style="color: #008080; ">172</span>         <span style="color: #0000FF; ">if</span> (do_fd_set(win32op, idx, fd, 0)<0)<br /> <span style="color: #008080; ">173</span>             <span style="color: #0000FF; ">return</span> (-1);<br /> <span style="color: #008080; ">174</span>     }<br /> <span style="color: #008080; ">175</span>     <span style="color: #0000FF; ">return</span> (0);<br /> <span style="color: #008080; ">176</span> }<br /> <span style="color: #008080; ">177</span> <br /> <span style="color: #008080; ">178</span> <span style="color: #0000FF; ">int</span><br /> <span style="color: #008080; ">179</span> win32_del(<span style="color: #0000FF; ">struct</span> event_base *<span style="color: #0000FF; ">base</span>, evutil_socket_t fd, <span style="color: #0000FF; ">short</span> old, <span style="color: #0000FF; ">short</span> events,<br /> <span style="color: #008080; ">180</span>           <span style="color: #0000FF; ">void</span> *_idx)<br /> <span style="color: #008080; ">181</span> {<br /> <span style="color: #008080; ">182</span>     <span style="color: #0000FF; ">struct</span> win32op *win32op = <span style="color: #0000FF; ">base</span>->evbase;<br /> <span style="color: #008080; ">183</span>     <span style="color: #0000FF; ">struct</span> idx_info *idx = _idx;<br /> <span style="color: #008080; ">184</span> <br /> <span style="color: #008080; ">185</span>     event_debug(("%s: Removing event for "EV_SOCK_FMT,<br /> <span style="color: #008080; ">186</span>         __func__, EV_SOCK_ARG(fd)));<br /> <span style="color: #008080; ">187</span>     <span style="color: #0000FF; ">if</span> (events & EV_READ)<br /> <span style="color: #008080; ">188</span>         do_fd_clear(<span style="color: #0000FF; ">base</span>, win32op, idx, 1);<br /> <span style="color: #008080; ">189</span>     <span style="color: #0000FF; ">if</span> (events & EV_WRITE)<br /> <span style="color: #008080; ">190</span>         do_fd_clear(<span style="color: #0000FF; ">base</span>, win32op, idx, 0);<br /> <span style="color: #008080; ">191</span> <br /> <span style="color: #008080; ">192</span>     <span style="color: #0000FF; ">return</span> 0;<br /> <span style="color: #008080; ">193</span> }<br /> <span style="color: #008080; ">194</span> <br /> <span style="color: #008080; ">195</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">void</span><br /> <span style="color: #008080; ">196</span> fd_set_copy(<span style="color: #0000FF; ">struct</span> win_fd_set *<span style="color: #0000FF; ">out</span>, <span style="color: #0000FF; ">const</span> <span style="color: #0000FF; ">struct</span> win_fd_set *<span style="color: #0000FF; ">in</span>)<br /> <span style="color: #008080; ">197</span> {<br /> <span style="color: #008080; ">198</span>     <span style="color: #0000FF; ">out</span>->fd_count = <span style="color: #0000FF; ">in</span>->fd_count;<br /> <span style="color: #008080; ">199</span>     memcpy(<span style="color: #0000FF; ">out</span>->fd_array, <span style="color: #0000FF; ">in</span>->fd_array, <span style="color: #0000FF; ">in</span>->fd_count * (<span style="color: #0000FF; ">sizeof</span>(SOCKET)));<br /> <span style="color: #008080; ">200</span> }<br /> <span style="color: #008080; ">201</span> <br /> <span style="color: #008080; ">202</span> <span style="color: #008000; ">/*</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">203</span> <span style="color: #008000; ">  static void dump_fd_set(struct win_fd_set *s)<br /> </span><span style="color: #008080; ">204</span> <span style="color: #008000; ">  {<br /> </span><span style="color: #008080; ">205</span> <span style="color: #008000; ">  unsigned int i;<br /> </span><span style="color: #008080; ">206</span> <span style="color: #008000; ">  printf("[ ");<br /> </span><span style="color: #008080; ">207</span> <span style="color: #008000; ">  for(i=0;i<s->fd_count;++i)<br /> </span><span style="color: #008080; ">208</span> <span style="color: #008000; ">  printf("%d ",(int)s->fd_array[i]);<br /> </span><span style="color: #008080; ">209</span> <span style="color: #008000; ">  printf("]\n");<br /> </span><span style="color: #008080; ">210</span> <span style="color: #008000; ">  }<br /> </span><span style="color: #008080; ">211</span> <span style="color: #008000; "></span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; ">212</span> <br /> <span style="color: #008080; ">213</span> <span style="color: #0000FF; ">int</span><br /> <span style="color: #008080; ">214</span> win32_dispatch(<span style="color: #0000FF; ">struct</span> event_base *<span style="color: #0000FF; ">base</span>, <span style="color: #0000FF; ">struct</span> timeval *tv)<br /> <span style="color: #008080; ">215</span> {<br /> <span style="color: #008080; ">216</span>     <span style="color: #0000FF; ">struct</span> win32op *win32op = <span style="color: #0000FF; ">base</span>->evbase;<br /> <span style="color: #008080; ">217</span>     <span style="color: #0000FF; ">int</span> res = 0;<br /> <span style="color: #008080; ">218</span>     unsigned j, i;<br /> <span style="color: #008080; ">219</span>     <span style="color: #0000FF; ">int</span> fd_count;<br /> <span style="color: #008080; ">220</span>     SOCKET s;<br /> <span style="color: #008080; ">221</span> <br /> <span style="color: #008080; ">222</span>     <span style="color: #0000FF; ">if</span> (win32op->resize_out_sets) {<br /> <span style="color: #008080; ">223</span>         size_t size = FD_SET_ALLOC_SIZE(win32op->num_fds_in_fd_sets);<br /> <span style="color: #008080; ">224</span>         <span style="color: #0000FF; ">if</span> (!(win32op->readset_out = mm_realloc(win32op->readset_out, size)))<br /> <span style="color: #008080; ">225</span>             <span style="color: #0000FF; ">return</span> (-1);<br /> <span style="color: #008080; ">226</span>         <span style="color: #0000FF; ">if</span> (!(win32op->exset_out = mm_realloc(win32op->exset_out, size)))<br /> <span style="color: #008080; ">227</span>             <span style="color: #0000FF; ">return</span> (-1);<br /> <span style="color: #008080; ">228</span>         <span style="color: #0000FF; ">if</span> (!(win32op->writeset_out = mm_realloc(win32op->writeset_out, size)))<br /> <span style="color: #008080; ">229</span>             <span style="color: #0000FF; ">return</span> (-1);<br /> <span style="color: #008080; ">230</span>         win32op->resize_out_sets = 0;<br /> <span style="color: #008080; ">231</span>     }<br /> <span style="color: #008080; ">232</span> <br /> <span style="color: #008080; ">233</span>     fd_set_copy(win32op->readset_out, win32op->readset_in);<br /> <span style="color: #008080; ">234</span>     fd_set_copy(win32op->exset_out, win32op->writeset_in);<br /> <span style="color: #008080; ">235</span>     fd_set_copy(win32op->writeset_out, win32op->writeset_in);<br /> <span style="color: #008080; ">236</span> <br /> <span style="color: #008080; ">237</span>     fd_count =<br /> <span style="color: #008080; ">238</span>         (win32op->readset_out->fd_count > win32op->writeset_out->fd_count) ?<br /> <span style="color: #008080; ">239</span>         win32op->readset_out->fd_count : win32op->writeset_out->fd_count;<br /> <span style="color: #008080; ">240</span> <br /> <span style="color: #008080; ">241</span>     <span style="color: #0000FF; ">if</span> (!fd_count) {<br /> <span style="color: #008080; ">242</span>         <span style="color: #0000FF; ">long</span> msec = tv ? evutil_tv_to_msec(tv) : LONG_MAX;<br /> <span style="color: #008080; ">243</span>         <span style="color: #008000; ">/*</span><span style="color: #008000; "> Sleep's DWORD argument is unsigned long </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; ">244</span>         <span style="color: #0000FF; ">if</span> (msec < 0)<br /> <span style="color: #008080; ">245</span>             msec = LONG_MAX;<br /> <span style="color: #008080; ">246</span>         <span style="color: #008000; ">/*</span><span style="color: #008000; "> Windows doesn't like you to call select() with no sockets </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; ">247</span>         Sleep(msec);<br /> <span style="color: #008080; ">248</span>         <span style="color: #0000FF; ">return</span> (0);<br /> <span style="color: #008080; ">249</span>     }<br /> <span style="color: #008080; ">250</span> <br /> <span style="color: #008080; ">251</span>     EVBASE_RELEASE_LOCK(<span style="color: #0000FF; ">base</span>, th_base_lock);<br /> <span style="color: #008080; ">252</span> <br /> <span style="color: #008080; ">253</span>     res = select(fd_count,<br /> <span style="color: #008080; ">254</span>              (<span style="color: #0000FF; ">struct</span> fd_set*)win32op->readset_out,<br /> <span style="color: #008080; ">255</span>              (<span style="color: #0000FF; ">struct</span> fd_set*)win32op->writeset_out,<br /> <span style="color: #008080; ">256</span>              (<span style="color: #0000FF; ">struct</span> fd_set*)win32op->exset_out, tv);<br /> <span style="color: #008080; ">257</span> <br /> <span style="color: #008080; ">258</span>     EVBASE_ACQUIRE_LOCK(<span style="color: #0000FF; ">base</span>, th_base_lock);<br /> <span style="color: #008080; ">259</span> <br /> <span style="color: #008080; ">260</span>     event_debug(("%s: select returned %d", __func__, res));<br /> <span style="color: #008080; ">261</span> <br /> <span style="color: #008080; ">262</span>     <span style="color: #0000FF; ">if</span> (res <= 0) {<br /> <span style="color: #008080; ">263</span>         <span style="color: #0000FF; ">return</span> res;<br /> <span style="color: #008080; ">264</span>     }<br /> <span style="color: #008080; ">265</span> <br /> <span style="color: #008080; ">266</span>     <span style="color: #0000FF; ">if</span> (win32op->readset_out->fd_count) {<br /> <span style="color: #008080; ">267</span>         i = rand() % win32op->readset_out->fd_count;<br /> <span style="color: #008080; ">268</span>         <span style="color: #0000FF; ">for</span> (j=0; j<win32op->readset_out->fd_count; ++j) {<br /> <span style="color: #008080; ">269</span>             <span style="color: #0000FF; ">if</span> (++i >= win32op->readset_out->fd_count)<br /> <span style="color: #008080; ">270</span>                 i = 0;<br /> <span style="color: #008080; ">271</span>             s = win32op->readset_out->fd_array[i];<br /> <span style="color: #008080; ">272</span>             evmap_io_active(<span style="color: #0000FF; ">base</span>, s, EV_READ);<br /> <span style="color: #008080; ">273</span>         }<br /> <span style="color: #008080; ">274</span>     }<br /> <span style="color: #008080; ">275</span>     <span style="color: #0000FF; ">if</span> (win32op->exset_out->fd_count) {<br /> <span style="color: #008080; ">276</span>         i = rand() % win32op->exset_out->fd_count;<br /> <span style="color: #008080; ">277</span>         <span style="color: #0000FF; ">for</span> (j=0; j<win32op->exset_out->fd_count; ++j) {<br /> <span style="color: #008080; ">278</span>             <span style="color: #0000FF; ">if</span> (++i >= win32op->exset_out->fd_count)<br /> <span style="color: #008080; ">279</span>                 i = 0;<br /> <span style="color: #008080; ">280</span>             s = win32op->exset_out->fd_array[i];<br /> <span style="color: #008080; ">281</span>             evmap_io_active(<span style="color: #0000FF; ">base</span>, s, EV_WRITE);<br /> <span style="color: #008080; ">282</span>         }<br /> <span style="color: #008080; ">283</span>     }<br /> <span style="color: #008080; ">284</span>     <span style="color: #0000FF; ">if</span> (win32op->writeset_out->fd_count) {<br /> <span style="color: #008080; ">285</span>         SOCKET s;<br /> <span style="color: #008080; ">286</span>         i = rand() % win32op->writeset_out->fd_count;<br /> <span style="color: #008080; ">287</span>         <span style="color: #0000FF; ">for</span> (j=0; j<win32op->writeset_out->fd_count; ++j) {<br /> <span style="color: #008080; ">288</span>             <span style="color: #0000FF; ">if</span> (++i >= win32op->writeset_out->fd_count)<br /> <span style="color: #008080; ">289</span>                 i = 0;<br /> <span style="color: #008080; ">290</span>             s = win32op->writeset_out->fd_array[i];<br /> <span style="color: #008080; ">291</span>             evmap_io_active(<span style="color: #0000FF; ">base</span>, s, EV_WRITE);<br /> <span style="color: #008080; ">292</span>         }<br /> <span style="color: #008080; ">293</span>     }<br /> <span style="color: #008080; ">294</span>     <span style="color: #0000FF; ">return</span> (0);<br /> <span style="color: #008080; ">295</span> }<br /> <span style="color: #008080; ">296</span> <br /> <span style="color: #008080; ">297</span> <span style="color: #0000FF; ">void</span><br /> <span style="color: #008080; ">298</span> win32_dealloc(<span style="color: #0000FF; ">struct</span> event_base *_base)<br /> <span style="color: #008080; ">299</span> {<br /> <span style="color: #008080; ">300</span>     <span style="color: #0000FF; ">struct</span> win32op *win32op = _base->evbase;<br /> <span style="color: #008080; ">301</span> <br /> <span style="color: #008080; ">302</span>     evsig_dealloc(_base);<br /> <span style="color: #008080; ">303</span>     <span style="color: #0000FF; ">if</span> (win32op->readset_in)<br /> <span style="color: #008080; ">304</span>         mm_free(win32op->readset_in);<br /> <span style="color: #008080; ">305</span>     <span style="color: #0000FF; ">if</span> (win32op->writeset_in)<br /> <span style="color: #008080; ">306</span>         mm_free(win32op->writeset_in);<br /> <span style="color: #008080; ">307</span>     <span style="color: #0000FF; ">if</span> (win32op->readset_out)<br /> <span style="color: #008080; ">308</span>         mm_free(win32op->readset_out);<br /> <span style="color: #008080; ">309</span>     <span style="color: #0000FF; ">if</span> (win32op->writeset_out)<br /> <span style="color: #008080; ">310</span>         mm_free(win32op->writeset_out);<br /> <span style="color: #008080; ">311</span>     <span style="color: #0000FF; ">if</span> (win32op->exset_out)<br /> <span style="color: #008080; ">312</span>         mm_free(win32op->exset_out);<br /> <span style="color: #008080; ">313</span>     <span style="color: #008000; ">/*</span><span style="color: #008000; "> XXXXX free the tree. </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; ">314</span> <br /> <span style="color: #008080; ">315</span>     memset(win32op, 0, <span style="color: #0000FF; ">sizeof</span>(win32op));<br /> <span style="color: #008080; ">316</span>     mm_free(win32op);<br /> <span style="color: #008080; ">317</span> }</div> </div> <img src ="http://www.shnenglu.com/xvsdf100/aggbug/204689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xvsdf100/" target="_blank">灝忛奔鍎?/a> 2013-12-10 14:20 <a href="http://www.shnenglu.com/xvsdf100/archive/2013/12/10/204689.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浠婄洰鏍囩閫杞歡錛堟柟渚夸竴浜涗漢鍚э級http://www.shnenglu.com/xvsdf100/archive/2013/11/22/204384.html灝忛奔鍎?/dc:creator>灝忛奔鍎?/author>Fri, 22 Nov 2013 08:58:00 GMThttp://www.shnenglu.com/xvsdf100/archive/2013/11/22/204384.htmlhttp://www.shnenglu.com/xvsdf100/comments/204384.htmlhttp://www.shnenglu.com/xvsdf100/archive/2013/11/22/204384.html#Feedback2http://www.shnenglu.com/xvsdf100/comments/commentRss/204384.htmlhttp://www.shnenglu.com/xvsdf100/services/trackbacks/204384.html娉ㄦ剰涓嶈浣跨敤涓枃甯愬彿鐧誨綍錛屽綋鍒濇病鏈夋敞鎰忚繖涓棶棰橈紝鍚庨潰涓涓敤鎴峰弽鏄犺鐧誨綍涓嶄笂錛屽悗闈㈡垜涔熸噿鐨勮錛屽彧瑕佸彨浠栫敤緇戝畾閭鐧誨綍銆?br />http://pan.baidu.com/s/1eKGYx
鏈鐮旂┒libevent婧愪唬鐮侊紝鎰熻鍒漢緇勭粐鍣ㄦ暟鎹粨鏋勫氨鑷劧婕備寒錛岀湅鏉ヨ嚜宸辮澶氬鍔犲己榪欐柟闈㈢殑鐮旂┒銆?img src ="http://www.shnenglu.com/xvsdf100/aggbug/204384.html" width = "1" height = "1" />

]]>
Autocad ObjectArx寮鍙?---------->Cad Hello World(涓f)http://www.shnenglu.com/xvsdf100/archive/2013/11/11/204204.html灝忛奔鍎?/dc:creator>灝忛奔鍎?/author>Mon, 11 Nov 2013 02:14:00 GMThttp://www.shnenglu.com/xvsdf100/archive/2013/11/11/204204.htmlhttp://www.shnenglu.com/xvsdf100/comments/204204.htmlhttp://www.shnenglu.com/xvsdf100/archive/2013/11/11/204204.html#Feedback0http://www.shnenglu.com/xvsdf100/comments/commentRss/204204.htmlhttp://www.shnenglu.com/xvsdf100/services/trackbacks/204204.html 1     virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
 2         // TODO: Load dependencies here
 3 
 4         // You *must* call On_kInitAppMsg here
 5         AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
 6         
 7         // TODO: Add your initialization code here
 8         acutPrintf(L"hello world");
 9         return (retCode) ; 10     }鎴戦鍏堣繘鍏s(鎴戠殑vs2008)鍒涘緩宸ョ▼錛?br />
鍥犱負鎴戝畨瑁呬簡ObjectArx Wizard 鎵浠ュ氨浼氬湪鍒涘緩宸ョ▼鏃跺欏嚭鐜癘bjextArx 錛岀劧鍚庨夋嫨錛岃緭鍏ヤ綘鐨勫伐紼嬪悕鐐瑰嚮紜畾銆?br /> 鎴戜滑浼氱湅鍒頒竴涓浣犻夋嫨鐣岄潰銆?br />
Your Registered 閭i噷鎴戜竴鑸兘娌℃湁濉紝璨屼技綾諱技絀洪棿鍛藉悕絀洪棿錛屼綘鎯沖~浠涔堝氨濉粈涔堬紝浼拌涓轟簡鎺掗櫎涓嶅悓arx鐨勫啿紿佸惂銆?br /> 鎴戜竴鑸兘浼氶夋嫨鏀寔MFC錛屽洜涓鴻繖鏍蜂粬鍚屾椂涔熸敮鎸乧om錛屽洜涓烘垜浠湪寮鍙戞椂鍊欑晫闈竴鑸篃浼氱敤MFC 錛屾墍浠ユ渶濂介夋嫨鏀寔MFC銆?br />
鐒跺悗浣犵偣鍑籉inish灝卞彲浠ヤ簡銆?br />
榪欐牱涓涓狾bjectArx鐨勫伐紼嬪氨鍒涘緩濂戒簡錛岀幇鍦ㄥ氨寮濮嬫垜浠啓浠g爜浜嗐?br /> 榪欎釜cpp 閲岄潰綾誨氨鐩稿綋浜庢垜浠琧/c++ main 鍑芥暟銆?br /> 鍏跺疄緇欐垜鎰熻灝卞拰mfc鎵嶄笉澶氾紝鍙槸鎶妋ain 灝佽鍦ㄦ渶閲岄潰錛屾垜浠琈FC寮鍙戞椂鍊欎篃鏄湅涓嶅埌main錛屾垜浠殑浠g爜灝辨槸鍦ㄤ竴涓被閲岄潰鍐欍傛墍浠ヨ繖閲屼篃宸笉澶氱殑銆?br /> 鎴戜滑鍙互鐪嬪嚭榪欐浠g爜錛?span style="font-size: 13px; color: #008080;"> 1     virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
 2         // TODO: Load dependencies here
 3 
 4         // You *must* call On_kInitAppMsg here
 5         AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
 6         
 7         // TODO: Add your initialization code here
 8 
 9         return (retCode) ;
10     }
11 
12     virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
13         // TODO: Add your code here
14 
15         // You *must* call On_kUnloadAppMsg here
16         AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;
17 
18         // TODO: Unload dependencies here
19 
20         return (retCode) ;
21     }
榪欎釜2涓嚱鏁版樉鐒舵槸涓涓垵濮嬪寲錛堝姞杞芥椂鍊欙級錛屼竴涓嵏杞芥椂鍊欒皟鐢ㄧ殑銆?br />
鐜板湪鎴戜滑寮濮嬫坊鍔犱唬鐮併傛潵鎵撳嵃hello world
鍦╲irtual AcRx::AppRetCode On_kInitAppMsg (void *pkt)鍑芥暟涓坊鍔犱竴鍙?nbsp;acutPrintf(L"hello world");
 1     virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
 2         // TODO: Load dependencies here
 3 
 4         // You *must* call On_kInitAppMsg here
 5         AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
 6         
 7         // TODO: Add your initialization code here
 8         acutPrintf(L"hello world");
 9         return (retCode) ;
10     }
鐒跺悗鎴戜滑鎴戝氨鍙互瀵煎叆cad榪涜嫻嬭瘯浜嗐? 鎵撳紑瀵瑰簲鐗堟湰鐨刢ad ,濡傛灉浣犳槸ObjectArx 2012閭d箞浣犲氨鍙兘鐢╟ad 2012.鎴戜笉鐭ラ亾涓轟粈涔坈ad涓嶅悜涓嬪吋瀹廣傘?br />鍦╟ad鍛戒護妗嗛噷闈㈣緭鍏PPLOAD,鐒跺悗閫夋嫨鍒版垜浠敓鎴愮殑arx銆?br />璁╁悗cad鍛戒護妗嗗氨鍑虹幇錛氬懡浠? APPLOAD
hello world宸叉垚鍔熷姞杞?CadHelloWorld.arx銆?br />鐪嬭鍒頒箙榪漢ello world.
榪欎釜鏄畝鍗曞憡璇夋柊鎵嬫庝箞寮勶紝鏈濂芥槸鑷繁鍘葷湅寮犲竼 ----------ObjectARX寮鍙戝疄渚嬫暀紼嬩粬璇翠笢瑗褲?/div>

]]>Autocad ObjectArx寮鍙?---------->鐜鎼緩http://www.shnenglu.com/xvsdf100/archive/2013/11/11/204202.html灝忛奔鍎?/dc:creator>灝忛奔鍎?/author>Mon, 11 Nov 2013 01:33:00 GMThttp://www.shnenglu.com/xvsdf100/archive/2013/11/11/204202.htmlhttp://www.shnenglu.com/xvsdf100/comments/204202.htmlhttp://www.shnenglu.com/xvsdf100/archive/2013/11/11/204202.html#Feedback0http://www.shnenglu.com/xvsdf100/comments/commentRss/204202.htmlhttp://www.shnenglu.com/xvsdf100/services/trackbacks/204202.html
寮濮嬬幆澧冪畝鍗曟惌寤哄拰鍙兘閬囧埌鐨勯棶棰樸?br />
1錛氬彲浠ュ幓榪欎釜璁哄潧涓嬫墍鏈夌増鏈殑Arx  http://www.objectarx.net/forum.php

2: 濡傛灉浣犱笅杞界殑2010鐗堟湰浠ヤ笂鍘嬬緝鍖呴噷闈㈡病鏈堿rx Winzard 榪欐牱浣犵殑vs灝辨病鏈夊搴擜rx鐨勫紩瀵鹼紝闈炲父涓嶆柟渚褲?铏界劧鎴戜滑鍙互瀹屽叏鑷繁鍒涘緩涓涓繖鏍峰伐紼嬶紝
鎴戝彲鑳藉幓cad 瀹樼綉鍘諱笅錛歨ttp://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=1911627

3錛氬鏋滀綘vs涓璒bjectArx宸ュ叿鏉′笉鏄劇ず鍥炬爣鐨勮瘽錛屽彲浠ョ櫨搴︿竴涓嬪繕璁版槸鍦ㄥ摢涓綉绔欎笅杞戒簡錛岃璞嗚眴鐨勭綉绔欍傜劧鍚庤В鍘嬪埌瀵瑰簲鏂囦歡澶瑰悕瀛楀氨鍙互浜嗐?br />
cad瀹夎闂錛?br />cad杞歡瀹夎瀹夎涓嶄笂涔熸槸涓縐嶆瘮杈冨父瑙侀棶棰樸?br />鎴戝氨鐢ㄥ崐澶╂椂闂存墠瑁呭ソ錛岃濂芥垜閮戒笉鐭ラ亾鍏蜂綋鐢ㄥ摢涓柟娉曡濂界殑銆傛垜閫氳繃鐧懼害鍜岃嚜宸卞垎鏋愪竴鑸琧ad 瑁呬笉濂界殑鍘熷洜灝卞彧鏈夊嚑涓?br />1錛氳礬寰勪笉鑳藉惈鏈変腑鏂囥?br />2錛氫綘鐨刢ad鍚嶅瓧澶暱銆?br />3錛歷c 2005 榪愯搴?瀹夎涓嶄笂銆?-----------------銆嬫垜灝辨槸榪欎釜闂銆?鎴戠殑cad鍦ㄥ畨瑁呯涓夋柟搴撴椂鍊欐繪槸澶辮觸錛屾垜瑙夊緱澶у鏁伴兘搴旇鏄繍琛屽簱瀹夎澶辮觸寮曡搗錛屼綘鏈濂藉厛鎶妚c2005鍗歌澆鎺夛紝鐒跺悗鍗曠嫭閲嶈錛屽鏋滄病鏈夋姤閿欑殑璇濓紝搴旇灝辨病鏈夐棶棰樹簡銆?br />
涔︾睄錛歄bjectARX寮鍙戝疄渚嬫暀紼?---寮犲竼銆? 璨屼技鎴戝氨鐪嬪埌榪欐牱涓鏈功綾嶏紝浣嗚繖鏈繕鏄樉寰楀お鑰佷簡銆傝矊浼艱鐨刟rx 2004鐗堟湰銆傝繖鏍峰氨瀵艱嚧閲岄潰涓浜涘唴瀹規垜浠牴鏈氨涓嶈兘鎸夌収閲岄潰鍋氫簡銆?br />鎵浠ユ帴涓嬫潵鍑犵瘒鏂囩珷灝辨槸鎬庝箞鐢╲s2008 鍜?arx 20012鏉ュ紑鍙戝嚑涓父瑙佺晫闈㈡彃浠朵簡錛岀浉褰撲簬涓涓暣鐞嗭紝鍥犱負鎴戜笂鍛ㄦ墠鑺變笁澶╂椂闂村涔燨bjectArx 寮鍙戯紝鎵浠ユ垜閬囧埌鐨勯棶棰樺ぇ澶氫漢寮濮嬪涔犻兘浼氶亣鍒扮殑銆?img src ="http://www.shnenglu.com/xvsdf100/aggbug/204202.html" width = "1" height = "1" />

]]>
浠婂ぉ鍙戝竷浜嗙敤Arcgis Server 鐨刉eb http://www.shnenglu.com/xvsdf100/archive/2013/07/29/202216.html灝忛奔鍎?/dc:creator>灝忛奔鍎?/author>Mon, 29 Jul 2013 03:31:00 GMThttp://www.shnenglu.com/xvsdf100/archive/2013/07/29/202216.htmlhttp://www.shnenglu.com/xvsdf100/comments/202216.htmlhttp://www.shnenglu.com/xvsdf100/archive/2013/07/29/202216.html#Feedback2http://www.shnenglu.com/xvsdf100/comments/commentRss/202216.htmlhttp://www.shnenglu.com/xvsdf100/services/trackbacks/202216.html鐜板湪鎬葷畻紼嶅井閮侀椃錛屽浠g爜錛屾暣浣撴灦鏋勯兘鏈夋墍浜嗚В銆?br />
鐜板湪鍏堟妸涓涓畝鍗曞潖澧冩惌鍑烘潵浜嗙劧鍚庢牴鎹渶姹傝繘琛屼慨鏀瑰氨鍙互浜嗐?br />鍔犳補銆傘傘傘?br />



榪欑瘒鏂囩珷娌℃湁浠諱綍鎶鏈紝鍙槸褰撳仛鑷繁鏃ヨ紼嶅井璁板綍涓涓嬨?br />
铏界劧鎵嶆瘯涓氬嚑涓湀錛屾劅瑙夋縺鎯呭氨娌℃湁閭d箞澶с傚伐璧勮繕鍙互錛屽伐浣滄瘮杈冪ǔ瀹氾紝浣嗚繖浜涢兘涓嶆槸鎴戠湅閲嶃?br />濡傛灉鏄庡勾鍏徃鍙戝睍鐨勬瘮杈冨ソ錛屾垜灝卞湪榪欎釜鍏徃濂藉ソ騫蹭笅鍘伙紝濡傛灉榪樻槸鑰佹牱瀛愶紝鎴戞棭鐐硅蛋錛岀湅鐪嬪闈㈢殑涓栫晫錛屼笉鎯蟲妸鑷繁嬋鎯呮秷鐏畣灝姐?br />
鑷粠鎺ヤ簡鍒漢澶栧寘欏圭洰錛屾妸鑷繁鎼炵殑绱錛屾劅瑙?4灝忔椂宸ヤ綔錛屽悗闈紤鎭?涓槦鏈熴傛妸鑷繁鍋氬吇鎳掍簡銆?br />榪欑偣瀵硅嚜宸遍潪甯鎬笉婊℃剰錛屽湪瀛︽牎鐨勬椂鍊欏嚑涔庢瘡澶╅兘鍦ㄥ啓浠g爜銆傛瘡澶╃殑閮藉湪榪涙銆?br />浣嗙湅鏈榪戠殑鍑犱釜鏈堣繘姝ュ緢灝戙?br />鍙兘鎬庝箞鍋氫漢鎳備簡涓浜涗簡鍚с?br />姣忓ぉ緇欒嚜宸變竴涓洰鏍囷紝瑕佽嚜宸變竴鐐圭偣榪涙銆傛棤璁烘槸鎶鏈繕鏄仛浜猴紝榪樻槸鏇村ソ瀛︿細鐢熸椿銆?br />code code up and day day up

]]>
c#瀵筫xcel 鍥捐〃鎿嶄綔http://www.shnenglu.com/xvsdf100/archive/2013/07/01/201419.html灝忛奔鍎?/dc:creator>灝忛奔鍎?/author>Mon, 01 Jul 2013 04:50:00 GMThttp://www.shnenglu.com/xvsdf100/archive/2013/07/01/201419.htmlhttp://www.shnenglu.com/xvsdf100/comments/201419.htmlhttp://www.shnenglu.com/xvsdf100/archive/2013/07/01/201419.html#Feedback1http://www.shnenglu.com/xvsdf100/comments/commentRss/201419.htmlhttp://www.shnenglu.com/xvsdf100/services/trackbacks/201419.html 瀹炵幇IDL瀵筫xcel瀵瑰浘琛ㄧ殑鎿嶄綔錛屽洜涓哄IDL緙栫▼涓嶇啛鎮夛紙娌℃湁瀛﹁繃錛岀湅榪囧嚑琛屼唬鐮佸悗鍐欒繃IDL浠g爜鑰屽凡錛屼換浣曡璦鎰熻宸笉澶氾紝瀛︿簡c/c++ 鍏朵粬鐨勮璦閮芥槸嫻簯錛夈?br /> 濡傛槸鎴戝氨鍏堢敤c#瀵筫xcel 榪涜鎿嶄綔錛屽洜涓虹畝鍗曘傦紙鍝釜璇█瀵瑰紑鍙戜笢瑗跨畝鍗曡嚜鐒剁敤鍝釜錛夈?br />
緗戜笂渚嬪瓙鐪熷皯銆傘傘傘傘傚彲浠ヨ瀵瑰浘琛ㄥ嚑涔庢病鏈夛紝鍙兘閫氳繃office鐨勫畯鏉ュ垎鏋愭庝箞鍐欎唬銆?br />
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using MSExcel = Microsoft.Office.Interop.Excel;
 6 using System.IO;
 7 using System.Reflection;
 8 
 9 
10 namespace 鎿嶄綔Excel
11 {
12     class Program
13     {
14         static void Main(string[] args)
15         {
16             MSExcel.Application excelApp;              //Excel搴旂敤紼嬪簭鍙橀噺 
17             MSExcel.Workbooks excelDoc;                     //Excel鏂囨。鍙橀噺 
18 
19             excelApp = new MSExcel.ApplicationClass();
20             string path = @"F:\23.xls";
21             Object Nothing = Missing.Value;
22             excelDoc = excelApp.Workbooks;
23             excelApp.ShowStartupDialog = true;
24 
25 
26             MSExcel::Workbook doc = excelDoc.Open(path, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing);
27             if (null == doc)
28             {
29                 return;
30             }
31 
32 
33             MSExcel.Worksheet ws = (MSExcel.Worksheet)doc.Sheets[1];        //绱㈠紩浠?寮濮?nbsp;錛岄毦閬揷# 鎴戠敤c#涓嶇啛鎮?/span>
34 
35             try
36             {
37 
38                MSExcel.Worksheet ws2 =  ((MSExcel.Worksheet)excelApp.ActiveSheet);
39 //榪欓噷鎴戞壘浜嗗ソ灝辨墠鐭ラ亾瑕佺敤ChartObject 鏉ユ帴錛屾垜寮濮嬬敤Chart ,_Chat閮戒笉琛岋紝娉ㄦ剰浜?/span>
40                MSExcel.ChartObject c = (MSExcel.ChartObject)ws2.ChartObjects("Chart 1");
41                c.Activate();
42                MSExcel.Chart chart1 = excelApp.ActiveChart;
43                Console.WriteLine("{0}", chart1.ChartTitle.Text);
44                chart1.ChartTitle.Text = "hello world";//璁劇疆鏍囬
45                 //璁劇疆 x,y杞淬?/span>
46                MSExcel::Axis aa = (MSExcel::Axis)chart1.Axes(2, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary);
47                //aa.MinimumScale = 341;
48                aa.MaximumScale = 370;
49                MSExcel::Axis bb = (MSExcel::Axis)chart1.Axes(1, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary);
50                bb.MinimumScale = 0.5;
51                
52             }
53             catch (System.Exception ex)
54             {
55                 Console.WriteLine("{0}", ex.Message);
56             }
57             
58            
59 
60             
61          
62            Console.Read();
63 
64 
65             //////////////////////////////////////////////////////////////////////////
66             //  瀵硅〃鏍艱繘琛屼慨鏀?br /> 67            // MSExcel.Range r;
68             // r = ws.get_Range("c5", "c5");
69            // r.Value2 = 1234;
70             //
71             //////////////////////////////////////////////////////////////////////////
72 
73             doc.Close(Nothing, Nothing, Nothing);
74             //excelApp.Save(Nothing);
75             excelApp.Quit();
76 
77 
78            
79 
80         }
81     }
82 }
83 
闄勪笂IDL鐨勪唬鐮侊紝鎴栬浼氬府鍒癐DL緙栫▼鐨勪漢銆?br />
  1 ;-----------------------------------------------------------------
  2 ;   GetAllDataFromCurrentWorksheet Method. Returns all valid, contiguous data
  3 ;       stored in currently selected worksheet
  4 ;
  5 ;     Example:
  6 ;
  7 ;       oIDL_Excel = obj_new("ITCffExcel", fileName, SHEET='irreg_grid1')
  8 ;       data = oIDL_Excel->GetAllDataFromCurrentWorksheet()
  9 ;-
 10 FUNCTION ITCffExcel::GetAllDataFromCurrentWorksheet
 11 
 12     COMPILE_OPT IDL2
 13     
 14     On_Error, 2
 15 
 16     IF (Obj_Valid(self.oCellRange)) THEN Obj_Destroy, self.oCellRange
 17         self.oSheet->GetProperty, Usedrange = oUsedCells
 18         self.oCellRange = oUsedCells
 19         self.oCellRange->GetProperty, Value = myValues
 20     IF (Size(myValues, /Type) EQ 0) THEN BEGIN ; undefined
 21         Message, 'Invalid Range '+range+'? Mixed data types not supported.'+ $
 22             ' Data must be numeric and contiguous.', /Ioerror
 23     ENDIF ELSE BEGIN
 24         ; Rearrange into IDL column-major format so user doesn't have to
 25         dims = Size(myValues, /Dimensions)
 26         myValues = Transpose(Reform(Temporary(myValues), dims[1], dims[0]))
 27 
 28         Return, myValues
 29     ENDELSE
 30 END
 31 
 32 
 33 pro ITCffExcel::SetChart,inputRange
 34   
 35 ; self.oSheet->GetProperty,Shapes = MyShapes
 36   ;MyShapes->AddChart
 37   
 38   self.oExcel->GetProperty,Charts = MyChart
 39   MyChart->add
 40   ;鑾峰緱鍒氬垰娣誨姞鐨勮〃,瀵瑰畠榪涜璁劇疆
 41   self.oExcel->GetProperty,ActiveChart = MyActiveChart
 42   ;鍙堣鑾峰彇ChartType 榪涜璧嬪?br /> 43   MyActiveChart->GetProperty,ChartType = MyChartType
 44   MyChartType = 51 ;榪欎釜鍊兼垜鏄氳繃鐪婥#浠g爜璺熻繘鍘葷湅鍒?nbsp;銆備笉鎯寵幏鍙栧璞℃潵鑾峰彇
 45   ;璁劇疆鏁版嵁婧?br /> 46     IF (Obj_Valid(self.oCellRange)) THEN Obj_Destroy, self.oCellRange
 47 
 48     IF (Size(inputRange, /Dimensions) EQ 2) THEN BEGIN
 49         self.oSheet->GetProperty, inputRange[0], inputRange[1], Range = oCellRange
 50         self.oCellRange = oCellRange
 51     ENDIF ELSE BEGIN
 52         self.oSheet->GetProperty, inputRange, Range = oCellRange
 53         self.oCellRange = oCellRange
 54     ENDELSE
 55   MyActiveChart->SetSourceData,self.oCellRange,2
 56   MyActiveChart->Location,2,"sheet1"
 57   
 58 END
 59 
 60 ;;;璁劇疆鍥捐〃鏍囬
 61 pro ITCffExcel::SetChartTitle,strTitle
 62   
 63     MyChart = self.oSheet->ChartObjects("Chart 1") 
 64     MyChart->Activate
 65     self.oExcel->GetProperty,ActiveChart = MyActiveChart
 66     MyActiveChart->GetProperty,ChartTitle = ChatTitle
 67     ChatTitle->SetProperty,Text = strTitle
 68     
 69 
 70    
 71   
 72   
 73 END
 74 ;-----------------------------------------------------------------
 75 ;
 76 ; 鍒犻櫎鎸囧畾琛ㄦ牸銆傝繖鏍峰氨鍙互灝卞~鍏呬簡銆?br /> 77 ;
 78 pro ITCffExcel::DeleteChart,inputRange
 79     IF (Obj_Valid(self.oCellRange)) THEN Obj_Destroy, self.oCellRange
 80 
 81     IF (Size(inputRange, /Dimensions) EQ 2) THEN BEGIN
 82         self.oSheet->GetProperty, inputRange[0], inputRange[1], Range = oCellRange
 83         self.oCellRange = oCellRange
 84     ENDIF ELSE BEGIN
 85         self.oSheet->GetProperty, inputRange, Range = oCellRange
 86         self.oCellRange = oCellRange
 87     ENDELSE
 88     
 89     ;榪涜鍒犻櫎
 90     ;self.oCellRange->GetProperty,Select = MySelect
 91     ObjSelect = self.oCellRange->Select()
 92     ;ObjSelect->Delete
 93     self.oCellRange->Delete
 94     
 95   ;MyActiveChart->SetSourceData,self.oCellRange,2
 96   ;MyActiveChart->Location,2,"sheet1"
 97   
 98 END
 99 
100 ;;璁劇疆y杞寸殑灞炴?br />101 ;XorY : 0 浠h〃璁劇疆 x , 1 浠h〃璁劇疆y
102 ;MaximumScale錛氭渶澶у?br />103 ;MinimumScale: 鏈灝忓?br />104 ;MinorUnit: 鏈灝忓埢搴?br />105 ;self.oSheet 
106 PRO ITCffExcel::SetXYAxes, XorY,nMaximumScale,nMinimumScale,nMajorUnit
107   MyChart = self.oSheet->ChartObjects("Chart 1") 
108   MyChart->Activate
109  
110   self.oExcel->GetProperty,ActiveChart = MyActiveChart
111   if (XorY EQ 0)then  begin
112   Axis = MyActiveChart->Axes(1,1)
113   endif else begin
114   Axis = MyActiveChart->Axes(2,1)
115   endelse
116   ;Axis->GetProperty,MaximumScale = MyMaximumScale
117   Axis->SetProperty,MaximumScale = nMaximumScale
118   Axis->SetProperty,MinimumScale = nMinimumScale
119   Axis->SetProperty,MajorUnit = nMajorUnit
120 
121 End
122 
123 
124 
125 ;-----------------------------------------------------------------
126 ;
127 ;淇濆瓨鏂囦歡
128 ;
129 PRO ITCffExcel::Save, fileName
130 
131     COMPILE_OPT IDL2
132 
133     IF N_Elements(fileName) EQ 0 THEN fileName = self.fileName
134 
135     self.oWkBookData->SaveAs, fileName
136 END
137 
138 ;-----------------------------------------------------------------
139 ;   GetData Method. Data from passed in range parameter
140 ;
141 ;   @param inputRange {in}{required}{scalar or 2 element string array - 1 and
142 ;       2D ranges supported} input
143 ;
144 ;     Example:
145 ;
146 ;       oExcel = Obj_New("ITCffExcel", "myData.xls")
147 ;       myData= oExcel->GetData("A1:A100" | ["P1:P100","S1:S100"])
148 ;-
149 FUNCTION ITCffExcel::GetRangeData, inputRange
150 
151     COMPILE_OPT IDL2
152     
153     On_Error, 2
154 
155     IF (Obj_Valid(self.oCellRange)) THEN Obj_Destroy, self.oCellRange
156 
157     IF (Size(inputRange, /Dimensions) EQ 2) THEN BEGIN
158         self.oSheet->GetProperty, inputRange[0], inputRange[1], Range = oCellRange
159         self.oCellRange = oCellRange
160     ENDIF ELSE BEGIN
161         self.oSheet->GetProperty, inputRange, Range = oCellRange
162         self.oCellRange = oCellRange
163     ENDELSE
164 
165     self.oCellRange->GetProperty, Value = myValues
166 
167     IF (Size(myValues, /Type) EQ 0) THEN BEGIN ; undefined
168         Message, 'Invalid Range '+range+'? Mixed data types not supported.'+ $
169          ' Data must be numeric and contiguous.', /Ioerror
170     ENDIF ELSE Return, myValues
171 END
172 
173 ;-----------------------------------------------------------------
174 ;
175 ;璁劇疆鍗曞厓鏍兼暟鎹?br />176 ;
177 PRO ITCffExcel::SetRangeData, inputRange, value
178 
179     COMPILE_OPT IDL2
180     
181     On_Error, 2
182 
183     IF (Obj_Valid(self.oCellRange)) THEN Obj_Destroy, self.oCellRange
184 
185     IF (Size(inputRange, /Dimensions) EQ 2) THEN BEGIN
186         self.oSheet->GetProperty, inputRange[0], inputRange[1], Range = oCellRange
187         self.oCellRange = oCellRange
188     ENDIF ELSE BEGIN
189         self.oSheet->GetProperty, inputRange, Range = oCellRange
190         self.oCellRange = oCellRange
191     ENDELSE
192 
193     self.oCellRange->SetProperty, 'select', Value = value
194     
195     Obj_Destroy, self.oCellRange
196 END
197 
198 ;-----------------------------------------------------------------
199 ;   Sets Properties on ITCffExcel Object
200 ;
201 ;   @Keyword:
202 ;
203 ;      Sheet {in}{optional}{scalar string} input
204 ;
205 ;      Example:
206 ;
207 ;      oExcel = Obj_New("ITCffExcel", "myData.xls")
208 ;      oExcel->SetPropery, SHEET="Sheet2"
209 ;-
210 PRO ITCffExcel::SetProperty, Sheet = sheet, _Extra = extra
211 
212     COMPILE_OPT IDL2
213     
214     On_Error, 2
215 
216     IF (Obj_Valid(self.oSheet)) THEN Obj_Destroy, self.oSheet
217     
218     self.oSheetCollection->GetProperty, sheet, Item = oSheet
219     
220     self.oSheet = oSheet
221 END
222 
223 ;-----------------------------------------------------------------
224 ;
225 ;鏋愭瀯
226 ;
227 PRO ITCffExcel::Cleanup
228     
229     COMPILE_OPT IDL2
230     
231     On_Error, 2
232     
233     self.oWkBookData->SetProperty, Saved = 1
234     self.oWkBookCollection->Close
235     self.oExcel->Quit
236     
237     Obj_Destroy, [self.oSheet, self.oCellRange, self.oSheetCollection, $
238                     self.oWkBookData, self.oWkBookCollection, self.oExcel]
239 END
240 
241 ;-----------------------------------------------------------------
242 ;
243 ;鍒濆鍖?br />244 ;
245 FUNCTION ITCffExcel::Init, fileName, Sheet = sheet
246 
247     COMPILE_OPT IDL2
248     
249     On_Error, 2
250 
251     IF (N_Params() LT 1) THEN Message, 'ITCffExcel::Init requires file name'
252 
253     ; Use the IDL COM import bridge to init Excel Application Object
254     self.oExcel = Obj_New("IDLcomIDispatch$PROGID$Excel_Application")
255     
256     IF ~self.oExcel THEN Return, 0
257 
258     ; Get a reference to the Excel Workbook Collection Object
259     self.oExcel->GetProperty, Workbooks = oWkBookCollection
260     self.oWkBookCollection = oWkBookCollection
261 
262     self.fileName = fileName
263 
264     ; Open the Excel data
265     self.oWkBookData = self.oWkBookCollection->Open(self.fileName)
266 
267     ; Get a reference to the sheets collection
268     self.oWkBookData->GetProperty, Sheets = oSheetCollection
269     self.oSheetCollection = oSheetCollection
270 
271     ; Parmamerized property - props can return a value
272     ; (this syntax used in collections) - Goofy COM
273     IF (Keyword_Set(sheet)) THEN BEGIN
274         self.oSheetCollection->GetProperty, sheet, Item = oSheet
275         self.oSheet = oSheet
276     ENDIF ELSE BEGIN
277         self.oSheetCollection->GetProperty, 'Sheet1', Item=oSheet
278         self.oSheet = oSheet
279     ENDELSE
280 
281     Return, 1
282 END
283 
284 ;-----------------------------------------------------------------
285 ;
286 ;瀹氫箟
287 ;
288 PRO ITCffExcel__Define
289 
290     COMPILE_OPT IDL2
291 
292     void = {ITCffExcel                                      , $
293             
294             ;鍙傛暟
295             fileName            :   ''                      , $
296                         
297             ;瀵硅薄
298             oExcel              :   Obj_New()               , $ 
299             oWkBookCollection   :   Obj_New()               , $
300             oWkBookData         :   Obj_New()               , $ 
301             oSheetCollection    :   Obj_New()               , $ 
302             oSheet              :   Obj_New()               , $ 
303             oCellRange          :   Obj_New()               $  
304             }
305             
306 END


]]>
IDL鎺ュ彛鎴栬浣犱細閬囧埌涓涓尯鏃犺鐨勫湴鏂?-----銆嬪叧閿瓧http://www.shnenglu.com/xvsdf100/archive/2013/06/25/201301.html灝忛奔鍎?/dc:creator>灝忛奔鍎?/author>Tue, 25 Jun 2013 09:34:00 GMThttp://www.shnenglu.com/xvsdf100/archive/2013/06/25/201301.htmlhttp://www.shnenglu.com/xvsdf100/comments/201301.htmlhttp://www.shnenglu.com/xvsdf100/archive/2013/06/25/201301.html#Feedback2http://www.shnenglu.com/xvsdf100/comments/commentRss/201301.htmlhttp://www.shnenglu.com/xvsdf100/services/trackbacks/201301.html鎴戠殑宸ヤ綔鍓嶆鏃墮棿涓昏緇欏啓IDL鎺ュ彛錛堜笅涓湀寮濮嬫姇鍚慓IS寮鍙戯級錛屼富瑕佹槸AUTOCAD鐨勬帴鍙o紝鎴戝叕鍙哥敤teigha鐨勫簱銆?br />涓嶅緱涓嶈浠g爜鍐欑殑鐪熺殑婕備寒錛屽府鍔╂枃妗d篃鍐欑殑寰堝ソ銆?br />
IDL 璧勬枡鏈韓灝卞緢灝戯紝IDL 鎺ュ彛璧勬枡灝卞嚑涔庡氨涓鏈佸鐨勪功綾嶏紝鑰屼笖鐗堟湰姣旇緝鑰佷簡錛屾墍浠ラ毦搴﹁繕鏄湁涓鐐圭殑銆?br />鎴戠幇鍦ㄥIDL鎺ュ彛搴旇鏄瘮杈冪啛緇冿紝濡傛灉浣犻亣鍒頒竴浜涢棶棰橈紝鍙互闂垜錛宮aybe鎴戞槸鐭ラ亾鐨勩?br />
濂戒簡錛岃涓涓嬫棰樸?br />鍦↖DL涓ぇ閲忎嬌鐢ㄥ叧閿瓧錛屾墍浠ユ垜浠湪寮鍙慖DL鎺ュ彛褰撲腑鐢ㄥ埌鍏抽敭瀛椾篃鏄潪甯稿鐨勩?br />
鎴戝氨涓嶅垎鏋愬叧閿瓧鐨勫師鐞嗕簡錛屽洜涓哄揩瑕佷笅鐝簡銆?br />鏈鏂扮増鍏抽敭瀛楃敤娉曞拰浠ュ墠鑰佺増鏈笉涓鏍鋒墍浠ラ渶瑕佹敞鎰忋?br />渚嬪瓙浠g爜鍦ㄥ府鍔╂枃妗f湁銆?br />
鐜板湪鎴戣涓涓緥瀛?br />鐜板湪鎴戜滑瀹氫箟鍏抽敭瀛楃殑IDL_KW_PAR
static IDL_KW_PAR kw_pars[] = {
{“BLOCK”錛孖DL_TYP_STRING錛?,0,(int*)IDL_KW_OFFSETOF(block_there),(char*)IDL_KW_OFFSETOF(Block)},
{"INDEX",IDL_TYP_LONG,1,0,(int*)IDL_KW_OFFSETOF(index_there),(char*) IDL_KW_OFFSETOF(index),
{NULL} 
};

榪欓噷灝卞畾涔夊ソ浜?IDL_KW_PAR.
娉ㄦ剰涓涓棶棰橈紝BLOCK 鍜?INDEX 瀹氫箟欏哄簭鏈夎姹傘?br />浣犲繀欏昏鎶夿LOCK鏀懼埌INDEX涓婇潰銆?br />鍥犱負B < I 銆?br />濡傛灉娌℃湁鎸夌収榪欐牱欏哄簭澹版槑浣犲氨浣跨敤鍏抽敭瀛楀氨浼氬嚭鐜頒笉鑳藉垎閰嶅叧閿瓧銆?br />鍥犱負榪欎釜蹇呴』 鎸夌収 in LEXICAL order 錛堣瘝娉曢『搴忔潵寮勶級銆?br />浣犱細瑙夊緱榪欎釜闈炲父濂界瑧錛屼絾鍗存槸鏄繖鏍風殑錛岃繖涓湪idl help 閲岄潰鏄病鏈夎鏄庣殑銆?br />榪欎釜鏄垜鍦ㄥ垎鏋恊xport.h 鍙戠幇闂瑙e喅鏂規硶銆?br />

鎴戝氨綆鍗曡鍒拌繖閲屽惂銆?br />
濡傛灉浣犳兂鐭ラ亾IDL 鎬庝箞鍦ㄧ粨鏋勪綋閲岄潰浼犻?IDL_VPTR 鎴栬?鎬庝箞榪斿洖鍔ㄦ佺殑鏁版嵁 鎴栬? === 鎴栬?涓浜汥WG鐨勪笢瑗夸篃鍙互鎵炬垜鍝︺?br />鍏跺疄鎴戞兂璇存垜鎿呴暱緗戠粶寮鍙戣涓嶅憿錛侊紒錛侊紒錛?br />My QQ 緹わ細274301756
閫熷害涓嬬彮錛屾垜IT 浣嗘垜浠庢潵涓嶅姞鐝傘傘?img src ="http://www.shnenglu.com/xvsdf100/aggbug/201301.html" width = "1" height = "1" />

]]>
鐪嬫垜鎬庢牱妯℃嫙3嬈℃彙鎵嬪拰鏁版嵁鍙戦侊紙windows錛?/title><link>http://www.shnenglu.com/xvsdf100/archive/2013/06/25/201297.html</link><dc:creator>灝忛奔鍎?/dc:creator><author>灝忛奔鍎?/author><pubDate>Tue, 25 Jun 2013 09:11:00 GMT</pubDate><guid>http://www.shnenglu.com/xvsdf100/archive/2013/06/25/201297.html</guid><wfw:comment>http://www.shnenglu.com/xvsdf100/comments/201297.html</wfw:comment><comments>http://www.shnenglu.com/xvsdf100/archive/2013/06/25/201297.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/xvsdf100/comments/commentRss/201297.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/xvsdf100/services/trackbacks/201297.html</trackback:ping><description><![CDATA[鐪嬭繃寰堝緗戠粶涔︾睄 鍜?緙栫▼涔︾睄錛岀獊鐒跺彂鐜拌嚜宸變粠鏉ユ病鏈夊疄鐜版ā鎷烼CP涓夋鎻℃墜銆?br /> 灝辮繛steven涔熷彧鏄敤鎶撳寘紼嬪簭璇存槑涓涓嬨?br /> 鎴戜竴鐩磋寰楀疄璺靛彧媯楠岀湡鐞嗙殑鍞竴鏍囧噯錛屽鏄氨寮濮嬭嚜宸辮瘯楠屻?br /> 鎴戝紑濮嬪噯澶囩敤鍘熷濂楁帴瀛楁潵瑙e喅榪欎釜闂錛屼絾鏄井杞凡緇忓湪xp錛堝惈XP錛変互鍚庡氨涓嶅湪鏀寔鍙戦佸師濮婽CP銆傦紙璨屼技緗戜笂鏈変漢鍙嶆眹緙栵紝鎵懼埌榪囨護鐨勪唬鐮併傦級<br /> 蹇冮噷涓涓嬪氨琚墦鍏ヨ胺搴曚簡銆?br /> 涓嶈繃紿佺劧鎯寵矊浼煎彲浠ョ敤椹卞姩鍙戦佹暟鎹寘錛岃屼笖鎴戜互鍓嶇敤winpcap鍐欒繃涓涓狝RP鏀誨嚮杞歡錛屾墍浠ュ彂閫佹暟鎹寘鐨勯棶棰樿В鍐充簡銆?br /> 浣嗘帴韙佃繃鏉ラ棶棰樺張鏉ヤ簡錛屾垜鐢╳inpcap鍙戦佹暟鎹寘錛屽簲鐢ㄥ眰娌℃湁瀵瑰簲鐨勭▼搴忥紝鎵浠indows緋葷粺浼氳嚜鍔ㄥ彂閫丷ST鏉ョ粓緇撴垜鐨勯摼鎺ャ?br /> 閾炬帴閮界粓姝㈡垜鎻′釜灞佺殑鎵嬪晩銆?br /> <br /> 鐬棿蹇冪浜嗭紝浣嗗摜娌℃湁鏀懼純銆傚張鎯寵搗鍝ヨ嚜瀛﹁繃椹卞姩寮鍙戯紝浜嗚В榪囩綉緇滈┍鍔ㄦ嫤鎴紝鎯寵搗浜哊DIS 涓棿灞傛暟鎹寘榪囨護銆?br /> 鎴戠洿鎺ョ畝鍗曚慨鏀歸偅涓唬鐮?瀹炵幇鎴戞嫤鎴猂ST 銆?鑰佸瓙鎷︽埅浜嗕綘錛屼綘灝卞彂鍚с?br /> 榪欎簺鍑嗗宸ヤ綔瀹屾垚浜嗐?br /> <br /> 鐪嬬湅鎴戝啓鐨勬牳蹇冮儴鍒?--銆?嬈℃彙鎵?鍔犱笂涓涓秷鎭彂閫?錛堟祴璇曠敤鐨勬槸浠ュ墠鑷繁鍐橳CP鑱婂ぉ紼嬪簭錛岃嚜宸卞彲浠ュ啓涓涓猅CP鑱婂ぉ紼嬪簭錛屼笉鎯沖啓鐨勮瘽灝辯敤www.baidu.com鏉ョ粌涔犱篃鍙互錛夈?br /> 鑷繁瑁匓鐨勭敤C++ 綾誨皝瑁呬竴涓嬪崗璁?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080; ">  1</span> #include "stdafx.h"<br /> <span style="color: #008080; ">  2</span> <br /> <span style="color: #008080; ">  3</span> <span style="color: #0000FF; ">#define</span> HAVE_REMOTE<br /> <span style="color: #008080; ">  4</span> <br /> <span style="color: #008080; ">  5</span> #pragma comment(lib,"wpcap.lib")<br /> <span style="color: #008080; ">  6</span> #pragma comment(lib,"ws2_32.lib")<br /> <span style="color: #008080; ">  7</span> #include <pcap.h><br /> <span style="color: #008080; ">  8</span> #include "PacketType.h"<br /> <span style="color: #008080; ">  9</span> #include "TCPProtocol.h"<br /> <span style="color: #008080; "> 10</span> <br /> <span style="color: #008080; "> 11</span> USHORT checksum(USHORT *buffer, <span style="color: #0000FF; ">int</span> size) <br /> <span style="color: #008080; "> 12</span> { <br /> <span style="color: #008080; "> 13</span>     unsigned <span style="color: #0000FF; ">long</span> cksum=0; <br /> <span style="color: #008080; "> 14</span>     <span style="color: #0000FF; ">while</span>(size >1) <br /> <span style="color: #008080; "> 15</span>     { <br /> <span style="color: #008080; "> 16</span>         cksum+=*buffer++; <br /> <span style="color: #008080; "> 17</span>         size -=<span style="color: #0000FF; ">sizeof</span>(USHORT); <br /> <span style="color: #008080; "> 18</span>     } <br /> <span style="color: #008080; "> 19</span>     <span style="color: #0000FF; ">if</span>(size ) <br /> <span style="color: #008080; "> 20</span>     { <br /> <span style="color: #008080; "> 21</span>         cksum += *(UCHAR*)buffer; <br /> <span style="color: #008080; "> 22</span>     } <br /> <span style="color: #008080; "> 23</span> <br /> <span style="color: #008080; "> 24</span>     cksum = (cksum >> 16) + (cksum & 0xffff); <br /> <span style="color: #008080; "> 25</span>     cksum += (cksum >>16); <br /> <span style="color: #008080; "> 26</span>     <span style="color: #0000FF; ">return</span> (USHORT)(~cksum); <br /> <span style="color: #008080; "> 27</span> } <br /> <span style="color: #008080; "> 28</span> <br /> <span style="color: #008080; "> 29</span> <span style="color: #0000FF; ">int</span> _tmain(<span style="color: #0000FF; ">int</span> argc, _TCHAR* argv[])<br /> <span style="color: #008080; "> 30</span> {<br /> <span style="color: #008080; "> 31</span>     pcap_if_t *alldevs;<br /> <span style="color: #008080; "> 32</span>     pcap_if_t *d;<br /> <span style="color: #008080; "> 33</span>     <span style="color: #0000FF; ">int</span> i=0;<br /> <span style="color: #008080; "> 34</span>     <span style="color: #0000FF; ">char</span> errbuf[PCAP_ERRBUF_SIZE];<br /> <span style="color: #008080; "> 35</span>     <span style="color: #0000FF; ">char</span> szSendBuf[60]={0}; <br /> <span style="color: #008080; "> 36</span> <br /> <span style="color: #008080; "> 37</span>     u_long Ser;<br /> <span style="color: #008080; "> 38</span> <br /> <span style="color: #008080; "> 39</span>     <span style="color: #008000; ">/*</span><span style="color: #008000; "> 鑾峰彇鏈湴鏈哄櫒璁懼鍒楄〃 </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; "> 40</span>     <span style="color: #0000FF; ">if</span> (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL <span style="color: #008000; ">/*</span><span style="color: #008000; "> auth is not needed </span><span style="color: #008000; ">*/</span>, &alldevs, <br /> <span style="color: #008080; "> 41</span> <br /> <span style="color: #008080; "> 42</span>         errbuf) == -1)<br /> <span style="color: #008080; "> 43</span>     {<br /> <span style="color: #008080; "> 44</span>         fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errbuf);<br /> <span style="color: #008080; "> 45</span>         exit(1);<br /> <span style="color: #008080; "> 46</span>     }<br /> <span style="color: #008080; "> 47</span> <br /> <span style="color: #008080; "> 48</span>     <span style="color: #008000; ">/*</span><span style="color: #008000; "> 鎵撳嵃鍒楄〃 </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; "> 49</span>     <span style="color: #0000FF; ">for</span>(d= alldevs; d != NULL; d= d->next)<br /> <span style="color: #008080; "> 50</span>     {<br /> <span style="color: #008080; "> 51</span>         printf("%d. %s", ++i, d->name);<br /> <span style="color: #008080; "> 52</span>         <span style="color: #0000FF; ">if</span> (d->description)<br /> <span style="color: #008080; "> 53</span>             printf(" (%s)\n", d->description);<br /> <span style="color: #008080; "> 54</span>         <span style="color: #0000FF; ">else</span><br /> <span style="color: #008080; "> 55</span>             printf(" (No description available)\n");<br /> <span style="color: #008080; "> 56</span>     }<br /> <span style="color: #008080; "> 57</span> <br /> <span style="color: #008080; "> 58</span>     <span style="color: #0000FF; ">if</span> (i == 0)<br /> <span style="color: #008080; "> 59</span>     {<br /> <span style="color: #008080; "> 60</span>         printf("\nNo interfaces found! Make sure WinPcap is installed.\n");<br /> <span style="color: #008080; "> 61</span>         <span style="color: #0000FF; ">return</span> 0;<br /> <span style="color: #008080; "> 62</span>     }<br /> <span style="color: #008080; "> 63</span> <br /> <span style="color: #008080; "> 64</span> <br /> <span style="color: #008080; "> 65</span>     pcap_t *fp;<br /> <span style="color: #008080; "> 66</span>     pcap_if_t *NIC = alldevs;<br /> <span style="color: #008080; "> 67</span>     puts("----------------------");<br /> <span style="color: #008080; "> 68</span>     puts(NIC->name);<br /> <span style="color: #008080; "> 69</span> <br /> <span style="color: #008080; "> 70</span>     <span style="color: #0000FF; ">if</span> ( (fp= pcap_open(NIC->name,            <span style="color: #008000; ">//</span><span style="color: #008000; "> 璁懼鍚?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; "> 71</span> <span style="color: #008000; "></span>        65536,                <span style="color: #008000; ">//</span><span style="color: #008000; "> 瑕佹崟鑾風殑閮ㄥ垎 (鍙崟鑾峰墠100涓瓧鑺?</span><span style="color: #008000; "><br /> </span><span style="color: #008080; "> 72</span> <span style="color: #008000; "></span>        PCAP_OPENFLAG_PROMISCUOUS,  <span style="color: #008000; ">//</span><span style="color: #008000; "> 娣鋒潅妯″紡</span><span style="color: #008000; "><br /> </span><span style="color: #008080; "> 73</span> <span style="color: #008000; "></span>        1000,               <span style="color: #008000; ">//</span><span style="color: #008000; "> 璇昏秴鏃舵椂闂?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; "> 74</span> <span style="color: #008000; "></span>        NULL,               <span style="color: #008000; ">//</span><span style="color: #008000; "> 榪滅▼鏈哄櫒楠岃瘉</span><span style="color: #008000; "><br /> </span><span style="color: #008080; "> 75</span> <span style="color: #008000; "></span>        errbuf              <span style="color: #008000; ">//</span><span style="color: #008000; "> 閿欒緙撳啿</span><span style="color: #008000; "><br /> </span><span style="color: #008080; "> 76</span> <span style="color: #008000; "></span>        ) ) == NULL)<br /> <span style="color: #008080; "> 77</span>     {<br /> <span style="color: #008080; "> 78</span>         fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n",NIC->name);<br /> <span style="color: #008080; "> 79</span>         getchar();<br /> <span style="color: #008080; "> 80</span>         <span style="color: #0000FF; ">return</span> 0;<br /> <span style="color: #008080; "> 81</span>     }<br /> <span style="color: #008080; "> 82</span> <br /> <span style="color: #008080; "> 83</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">寮濮嬫瀯寤烘暟鎹寘</span><span style="color: #008000; "><br /> </span><span style="color: #008080; "> 84</span> <span style="color: #008000; "></span>    BYTE* Packet = NULL;<br /> <span style="color: #008080; "> 85</span> <br /> <span style="color: #008080; "> 86</span> <br /> <span style="color: #008080; "> 87</span>     BYTE Data[65535];<br /> <span style="color: #008080; "> 88</span> <br /> <span style="color: #008080; "> 89</span>     <span style="color: #0000FF; ">char</span> buf[1024] = {0};<br /> <span style="color: #008080; "> 90</span>     sprintf(buf,"192.168.1.%d",i);<br /> <span style="color: #008080; "> 91</span> <br /> <span style="color: #008080; "> 92</span> <br /> <span style="color: #008080; "> 93</span>     CTCPProtocol tcpData;<br /> <span style="color: #008080; "> 94</span> <br /> <span style="color: #008080; "> 95</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">璁劇疆浠ュお緗戞暟鎹寘</span><span style="color: #008000; "><br /> </span><span style="color: #008080; "> 96</span> <span style="color: #008000; "></span>    BYTE SrcMac[6] = {0x00,0x26,0x82,0xAC,0x81,0x06};<br /> <span style="color: #008080; "> 97</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">BYTE SrcMac[6] = {0xc8,0x0a,0xa9,0xc5,0x8e,0xa0};<br /> </span><span style="color: #008080; "> 98</span> <span style="color: #008000; ">    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">BYTE DesMac[6] = {0xbc,0xd1,0x77,0x85,0xea,0x44};</span><span style="color: #008000; "><br /> </span><span style="color: #008080; "> 99</span> <span style="color: #008000; "></span>    BYTE DesMac[6] = {0x70,0xf1,0xa1,0xa1,0xe6,0x26};<br /> <span style="color: #008080; ">100</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">BYTE DesMac[6] = {0x0,0x21,0x27,0x8b,0x01,0x20};</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">101</span> <span style="color: #008000; "></span>    tcpData.CBaseNetProtol::SetMac(SrcMac,DesMac);<br /> <span style="color: #008080; ">102</span>     tcpData.CBaseNetProtol::SetProtocol(0x800);<br /> <span style="color: #008080; ">103</span> <br /> <span style="color: #008080; ">104</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">璁劇疆IP鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">105</span> <span style="color: #008000; "></span>    tcpData.CIPProtocol::SetHlen(<span style="color: #0000FF; ">sizeof</span>(IPHEADER));<br /> <span style="color: #008080; ">106</span>     tcpData.CIPProtocol::SetVer(4);<br /> <span style="color: #008080; ">107</span>     tcpData.CIPProtocol::SetIPTolLen(<span style="color: #0000FF; ">sizeof</span>(IPHEADER)+<span style="color: #0000FF; ">sizeof</span>(TCPHEADER));<br /> <span style="color: #008080; ">108</span>     tcpData.CIPProtocol::SetID(256);<br /> <span style="color: #008080; ">109</span>     tcpData.CIPProtocol::SetFlagAndFrag(0,0);<br /> <span style="color: #008080; ">110</span>     tcpData.CIPProtocol::SetTTl(64);<br /> <span style="color: #008080; ">111</span>     tcpData.CIPProtocol::SetProtocol(6);<br /> <span style="color: #008080; ">112</span>     tcpData.CIPProtocol::SetIP("192.168.12.2","192.168.12.1");   <span style="color: #008000; ">//</span><span style="color: #008000; ">220.181.163.22<br /> </span><span style="color: #008080; ">113</span> <span style="color: #008000; "><br /> </span><span style="color: #008080; ">114</span> <span style="color: #008000; ">    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">璁劇疆TCP 鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">115</span> <span style="color: #008000; "></span>    tcpData.SetPort(6654,6666);<br /> <span style="color: #008080; ">116</span>     tcpData.SetSerial(256);<br /> <span style="color: #008080; ">117</span>     tcpData.SetACKSerial(0);<br /> <span style="color: #008080; ">118</span>     tcpData.SetTCPHeardLen(<span style="color: #0000FF; ">sizeof</span>(TCPHEADER));<br /> <span style="color: #008080; ">119</span>     tcpData.SetFlag(2);<br /> <span style="color: #008080; ">120</span>     tcpData.SetWindowSize(16384);<br /> <span style="color: #008080; ">121</span>     tcpData.SetURP(0);<br /> <span style="color: #008080; ">122</span> <br /> <span style="color: #008080; ">123</span> <br /> <span style="color: #008080; ">124</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">鐜板湪鏋勫緩鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">125</span> <span style="color: #008000; "></span>    tcpData.MakePacket();<br /> <span style="color: #008080; ">126</span> <br /> <span style="color: #008080; ">127</span> <br /> <span style="color: #008080; ">128</span>     tcpData.GetPacket(Data,65535);<br /> <span style="color: #008080; ">129</span>     <span style="color: #0000FF; ">int</span> nLen = tcpData.GetTotalSize();<br /> <span style="color: #008080; ">130</span> <br /> <span style="color: #008080; ">131</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">鏋勫緩ip 鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">132</span> <span style="color: #008000; "></span>    tcpData.CIPProtocol::SetData(Data,nLen);<br /> <span style="color: #008080; ">133</span>     tcpData.CIPProtocol::MakePacket();<br /> <span style="color: #008080; ">134</span> <br /> <span style="color: #008080; ">135</span>     tcpData.CIPProtocol::GetPacket(Data,65535);<br /> <span style="color: #008080; ">136</span>     nLen = tcpData.CIPProtocol::GetTotalSize();<br /> <span style="color: #008080; ">137</span> <br /> <span style="color: #008080; ">138</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">鏋勫緩浠ュお緗戞暟鎹寘</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">139</span> <span style="color: #008000; "></span>    tcpData.CBaseNetProtol::SetData(Data,nLen);<br /> <span style="color: #008080; ">140</span>     tcpData.CBaseNetProtol::MakePacket();<br /> <span style="color: #008080; ">141</span>     tcpData.CBaseNetProtol::GetPacket(Data,65535);<br /> <span style="color: #008080; ">142</span>     nLen = tcpData.CBaseNetProtol::GetPacketSize();<br /> <span style="color: #008080; ">143</span> <br /> <span style="color: #008080; ">144</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">鍙戦佹彙鎵嬫暟鎹寘1.</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">145</span> <span style="color: #008000; "></span>    <span style="color: #008000; ">/*</span><span style="color: #008000; "> 鍙戦佹暟鎹寘 </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; ">146</span>     <span style="color: #0000FF; ">if</span> (pcap_sendpacket(fp, (<span style="color: #0000FF; ">const</span> UCHAR*)Data,nLen <span style="color: #008000; ">/*</span><span style="color: #008000; "> size </span><span style="color: #008000; ">*/</span>) != 0)<br /> <span style="color: #008080; ">147</span>     {<br /> <span style="color: #008080; ">148</span>         fprintf(stderr,"\nError sending the packet: \n", pcap_geterr(fp));<br /> <span style="color: #008080; ">149</span>         getchar();<br /> <span style="color: #008080; ">150</span>         <span style="color: #0000FF; ">return</span> 0;<br /> <span style="color: #008080; ">151</span>     }<br /> <span style="color: #008080; ">152</span> <br /> <span style="color: #008080; ">153</span> <br /> <span style="color: #008080; ">154</span> <br /> <span style="color: #008080; ">155</span>     tcpData.CBaseNetProtol::SetMac(SrcMac,DesMac);<br /> <span style="color: #008080; ">156</span>     tcpData.CBaseNetProtol::SetProtocol(0x800);<br /> <span style="color: #008080; ">157</span> <br /> <span style="color: #008080; ">158</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">璁劇疆IP鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">159</span> <span style="color: #008000; "></span>    tcpData.CIPProtocol::SetHlen(<span style="color: #0000FF; ">sizeof</span>(IPHEADER));<br /> <span style="color: #008080; ">160</span>     tcpData.CIPProtocol::SetVer(4);<br /> <span style="color: #008080; ">161</span>     tcpData.CIPProtocol::SetIPTolLen(<span style="color: #0000FF; ">sizeof</span>(IPHEADER)+<span style="color: #0000FF; ">sizeof</span>(TCPHEADER));<br /> <span style="color: #008080; ">162</span>     tcpData.CIPProtocol::SetID(256);<br /> <span style="color: #008080; ">163</span>     tcpData.CIPProtocol::SetFlagAndFrag(0,0);<br /> <span style="color: #008080; ">164</span>     tcpData.CIPProtocol::SetTTl(64);<br /> <span style="color: #008080; ">165</span>     tcpData.CIPProtocol::SetProtocol(6);<br /> <span style="color: #008080; ">166</span>     tcpData.CIPProtocol::SetIP("192.168.12.2","192.168.12.1");   <span style="color: #008000; ">//</span><span style="color: #008000; ">220.181.163.22<br /> </span><span style="color: #008080; ">167</span> <span style="color: #008000; "><br /> </span><span style="color: #008080; ">168</span> <span style="color: #008000; ">    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">璁劇疆TCP 鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">169</span> <span style="color: #008000; "></span>    tcpData.SetPort(6654,6666);<br /> <span style="color: #008080; ">170</span>     tcpData.SetSerial(256);<br /> <span style="color: #008080; ">171</span>     tcpData.SetACKSerial(0);<br /> <span style="color: #008080; ">172</span>     tcpData.SetTCPHeardLen(<span style="color: #0000FF; ">sizeof</span>(TCPHEADER));<br /> <span style="color: #008080; ">173</span>     tcpData.SetFlag(2);<br /> <span style="color: #008080; ">174</span>     tcpData.SetWindowSize(16384);<br /> <span style="color: #008080; ">175</span>     tcpData.SetURP(0);<br /> <span style="color: #008080; ">176</span> <br /> <span style="color: #008080; ">177</span> <br /> <span style="color: #008080; ">178</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">閫氳繃鎹曡幏鏁版嵁鍖呭緱鍒板鏂瑰彂榪囨潵鐨勬暟鎹寘錛岀劧鍚庡啀娣誨姞鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">179</span> <span style="color: #008000; "></span><br /> <span style="color: #008080; ">180</span>     <span style="color: #0000FF; ">struct</span> pcap_pkthdr *header;<br /> <span style="color: #008080; ">181</span>     <span style="color: #0000FF; ">const</span> u_char *pkt_data;<br /> <span style="color: #008080; ">182</span> <br /> <span style="color: #008080; ">183</span>     <span style="color: #0000FF; ">int</span> res = 0;<br /> <span style="color: #008080; ">184</span>     <span style="color: #0000FF; ">while</span>(res = pcap_next_ex( fp, &header, &pkt_data))<br /> <span style="color: #008080; ">185</span>     {<br /> <span style="color: #008080; ">186</span>         IPHEADER *ip = (IPHEADER*)(pkt_data + 14);<br /> <span style="color: #008080; ">187</span>         in_addr addr;<br /> <span style="color: #008080; ">188</span>         addr.S_un.S_addr = ip->destIP;<br /> <span style="color: #008080; ">189</span>         TCPHEADER* tcp = (TCPHEADER*)(pkt_data + 14 + 20);<br /> <span style="color: #008080; ">190</span>         <span style="color: #0000FF; ">if</span>(strcmp("192.168.12.2",inet_ntoa(addr)) == 0)<br /> <span style="color: #008080; ">191</span>         {<br /> <span style="color: #008080; ">192</span>             puts("--------------------------------------------");<br /> <span style="color: #008080; ">193</span>             printf("%s\n",inet_ntoa(addr));<br /> <span style="color: #008080; ">194</span>             printf("绔彛:%d~~~~~~~~%d\n",ntohs(tcp->th_dport),ntohs(tcp->th_sport));<br /> <span style="color: #008080; ">195</span>             printf("搴忓彿:%u ACK:%u",ntohl(tcp->th_seq),ntohl(tcp->th_ack));<br /> <span style="color: #008080; ">196</span>             puts("--------------------------------------------");<br /> <span style="color: #008080; ">197</span> <br /> <span style="color: #008080; ">198</span>             <span style="color: #008000; ">//</span><span style="color: #008000; ">getchar();</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">199</span> <span style="color: #008000; "></span><br /> <span style="color: #008080; ">200</span> <br /> <span style="color: #008080; ">201</span> <br /> <span style="color: #008080; ">202</span>             Ser = ntohl(tcp->th_seq) + 1;            <span style="color: #008000; ">//</span><span style="color: #008000; ">榪涜絎簩嬈℃彙鎵?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">203</span> <span style="color: #008000; "></span>            tcpData.SetFlag(0x10);            <span style="color: #008000; ">//</span><span style="color: #008000; ">閲嶆柊璁劇疆</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">204</span> <span style="color: #008000; "></span>            tcpData.SetSerial(257);                        <span style="color: #008000; ">//</span><span style="color: #008000; ">IP鐨処D 涓嶈繘琛岃緗病鏈夊獎鍝嶏紝鎹垜鐨勬祴璇曘?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">205</span> <span style="color: #008000; "></span>            tcpData.SetACKSerial(Ser);<br /> <span style="color: #008080; ">206</span>             tcpData.CIPProtocol::SetID(257);<br /> <span style="color: #008080; ">207</span> <br /> <span style="color: #008080; ">208</span>             <span style="color: #0000FF; ">break</span>;<br /> <span style="color: #008080; ">209</span>         }<br /> <span style="color: #008080; ">210</span> <br /> <span style="color: #008080; ">211</span>     }<br /> <span style="color: #008080; ">212</span> <br /> <span style="color: #008080; ">213</span> <br /> <span style="color: #008080; ">214</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">鐜板湪鏋勫緩鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">215</span> <span style="color: #008000; "></span>    tcpData.MakePacket();<br /> <span style="color: #008080; ">216</span> <br /> <span style="color: #008080; ">217</span>     tcpData.GetPacket(Data,65535);<br /> <span style="color: #008080; ">218</span>     nLen = tcpData.GetTotalSize();<br /> <span style="color: #008080; ">219</span> <br /> <span style="color: #008080; ">220</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">鏋勫緩ip 鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">221</span> <span style="color: #008000; "></span>    tcpData.CIPProtocol::SetData(Data,nLen);<br /> <span style="color: #008080; ">222</span>     tcpData.CIPProtocol::MakePacket();<br /> <span style="color: #008080; ">223</span> <br /> <span style="color: #008080; ">224</span>     tcpData.CIPProtocol::GetPacket(Data,65535);<br /> <span style="color: #008080; ">225</span>     nLen = tcpData.CIPProtocol::GetTotalSize();<br /> <span style="color: #008080; ">226</span> <br /> <span style="color: #008080; ">227</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">鏋勫緩浠ュお緗戞暟鎹寘</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">228</span> <span style="color: #008000; "></span>    tcpData.CBaseNetProtol::SetData(Data,nLen);<br /> <span style="color: #008080; ">229</span>     tcpData.CBaseNetProtol::MakePacket();<br /> <span style="color: #008080; ">230</span>     tcpData.CBaseNetProtol::GetPacket(Data,65535);<br /> <span style="color: #008080; ">231</span>     nLen = tcpData.CBaseNetProtol::GetPacketSize();<br /> <span style="color: #008080; ">232</span> <br /> <span style="color: #008080; ">233</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">鍙戦佹彙鎵嬫暟鎹寘1.</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">234</span> <span style="color: #008000; "></span>    <span style="color: #008000; ">/*</span><span style="color: #008000; "> 鍙戦佹暟鎹寘 </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; ">235</span>     <span style="color: #0000FF; ">if</span> (pcap_sendpacket(fp, (<span style="color: #0000FF; ">const</span> UCHAR*)Data,nLen <span style="color: #008000; ">/*</span><span style="color: #008000; "> size </span><span style="color: #008000; ">*/</span>) != 0)<br /> <span style="color: #008080; ">236</span>     {<br /> <span style="color: #008080; ">237</span>         fprintf(stderr,"\nError sending the packet: \n", pcap_geterr(fp));<br /> <span style="color: #008080; ">238</span>         getchar();<br /> <span style="color: #008080; ">239</span>         <span style="color: #0000FF; ">return</span> 0;<br /> <span style="color: #008080; ">240</span>     }<br /> <span style="color: #008080; ">241</span> <br /> <span style="color: #008080; ">242</span>     <span style="color: #808080; ">////////////////////////////////////////////////////////////////////////</span><span style="color: #008000; ">//</span><span style="color: #808080; "><br /> </span><span style="color: #008080; ">243</span> <span style="color: #808080; "></span><br /> <span style="color: #008080; ">244</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">寮濮嬪彂閫乀CP 鏁版嵁銆?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">245</span> <span style="color: #008000; "></span><br /> <span style="color: #008080; ">246</span>     CTCPProtocol tcpData1;<br /> <span style="color: #008080; ">247</span>     tcpData1.CBaseNetProtol::SetMac(SrcMac,DesMac);<br /> <span style="color: #008080; ">248</span>     tcpData1.CBaseNetProtol::SetProtocol(0x800);<br /> <span style="color: #008080; ">249</span> <br /> <span style="color: #008080; ">250</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">璁劇疆IP鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">251</span> <span style="color: #008000; "></span>    tcpData1.CIPProtocol::SetHlen(<span style="color: #0000FF; ">sizeof</span>(IPHEADER));<br /> <span style="color: #008080; ">252</span>     tcpData1.CIPProtocol::SetVer(4);<br /> <span style="color: #008080; ">253</span>     tcpData1.CIPProtocol::SetIPTolLen(<span style="color: #0000FF; ">sizeof</span>(IPHEADER)+<span style="color: #0000FF; ">sizeof</span>(TCPHEADER)+8);        <span style="color: #008000; ">//</span><span style="color: #008000; ">澧炲姞鏁版嵁鐨勯暱搴?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">254</span> <span style="color: #008000; "></span>    tcpData1.CIPProtocol::SetFlagAndFrag(0,0);<br /> <span style="color: #008080; ">255</span>     tcpData1.CIPProtocol::SetTTl(64);<br /> <span style="color: #008080; ">256</span>     tcpData1.CIPProtocol::SetProtocol(6);<br /> <span style="color: #008080; ">257</span>     tcpData1.CIPProtocol::SetIP("192.168.12.2","192.168.12.1");   <span style="color: #008000; ">//</span><span style="color: #008000; ">220.181.163.22<br /> </span><span style="color: #008080; ">258</span> <span style="color: #008000; "><br /> </span><span style="color: #008080; ">259</span> <span style="color: #008000; ">    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">璁劇疆TCP 鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">260</span> <span style="color: #008000; "></span>    tcpData1.SetPort(6654,6666);<br /> <span style="color: #008080; ">261</span>     tcpData1.SetTCPHeardLen(<span style="color: #0000FF; ">sizeof</span>(TCPHEADER));<br /> <span style="color: #008080; ">262</span>     tcpData1.SetWindowSize(16384);<br /> <span style="color: #008080; ">263</span>     tcpData1.SetURP(0);<br /> <span style="color: #008080; ">264</span> <br /> <span style="color: #008080; ">265</span> <br /> <span style="color: #008080; ">266</span>     tcpData.CIPProtocol::SetID(257);<br /> <span style="color: #008080; ">267</span>     tcpData1.SetSerial(257);                        <span style="color: #008000; ">//</span><span style="color: #008000; ">IP鐨処D 涓嶈繘琛岃緗病鏈夊獎鍝嶏紝鎹垜鐨勬祴璇曘?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">268</span> <span style="color: #008000; "></span>    tcpData1.SetACKSerial(Ser);<br /> <span style="color: #008080; ">269</span>     tcpData1.SetFlag(0x18);<br /> <span style="color: #008080; ">270</span>     <span style="color: #0000FF; ">char</span>  hello[] = "aaaaaaaa";<br /> <span style="color: #008080; ">271</span>     tcpData1.SetData((BYTE*)hello,strlen(hello));<br /> <span style="color: #008080; ">272</span>     tcpData1.MakePacket();<br /> <span style="color: #008080; ">273</span> <br /> <span style="color: #008080; ">274</span>     tcpData1.GetPacket(Data,65535);<br /> <span style="color: #008080; ">275</span>     nLen = tcpData1.GetTotalSize();<br /> <span style="color: #008080; ">276</span> <br /> <span style="color: #008080; ">277</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">鏋勫緩ip 鏁版嵁鍖?/span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">278</span> <span style="color: #008000; "></span>    tcpData1.CIPProtocol::SetData(Data,nLen);<br /> <span style="color: #008080; ">279</span>     tcpData1.CIPProtocol::MakePacket();<br /> <span style="color: #008080; ">280</span> <br /> <span style="color: #008080; ">281</span>     tcpData1.CIPProtocol::GetPacket(Data,65535);<br /> <span style="color: #008080; ">282</span>     nLen = tcpData1.CIPProtocol::GetTotalSize();<br /> <span style="color: #008080; ">283</span> <br /> <span style="color: #008080; ">284</span>     <span style="color: #008000; ">//</span><span style="color: #008000; ">鏋勫緩浠ュお緗戞暟鎹寘</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">285</span> <span style="color: #008000; "></span>    tcpData1.CBaseNetProtol::SetData(Data,nLen);<br /> <span style="color: #008080; ">286</span>     tcpData1.CBaseNetProtol::MakePacket();<br /> <span style="color: #008080; ">287</span>     tcpData1.CBaseNetProtol::GetPacket(Data,65535);<br /> <span style="color: #008080; ">288</span>     nLen = tcpData1.CBaseNetProtol::GetPacketSize();<br /> <span style="color: #008080; ">289</span> <br /> <span style="color: #008080; ">290</span>     <span style="color: #008000; ">/*</span><span style="color: #008000; "> 鍙戦佹暟鎹寘 </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; ">291</span>     <span style="color: #0000FF; ">if</span> (pcap_sendpacket(fp, (<span style="color: #0000FF; ">const</span> UCHAR*)Data,nLen <span style="color: #008000; ">/*</span><span style="color: #008000; "> size </span><span style="color: #008000; ">*/</span>) != 0)<br /> <span style="color: #008080; ">292</span>     {<br /> <span style="color: #008080; ">293</span>         fprintf(stderr,"\nError sending the packet: \n", pcap_geterr(fp));<br /> <span style="color: #008080; ">294</span>         getchar();<br /> <span style="color: #008080; ">295</span>         <span style="color: #0000FF; ">return</span> 0;<br /> <span style="color: #008080; ">296</span>     }<br /> <span style="color: #008080; ">297</span> <br /> <span style="color: #008080; ">298</span> <br /> <span style="color: #008080; ">299</span> <br /> <span style="color: #008080; ">300</span>     <span style="color: #008000; ">/*</span><span style="color: #008000; "> 涓嶅啀闇瑕佽澶囧垪琛ㄤ簡錛岄噴鏀懼畠 </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; ">301</span>     puts("鍙戦佸畬姣?);<br /> <span style="color: #008080; ">302</span>     getchar();<br /> <span style="color: #008080; ">303</span>     pcap_freealldevs(alldevs);<br /> <span style="color: #008080; ">304</span>     <span style="color: #0000FF; ">return</span> 0;<br /> <span style="color: #008080; ">305</span> }<br /> <span style="color: #008080; ">306</span> </div> 濡傛灉浣犳湁铏氭嫙緗戝崱錛屼綘榪樻槸鍏蟲帀錛屽洜涓烘垜榛樿璋冪敤絎竴寮犵綉鍗★紝涓嶇劧灝變細鍑虹幇闂銆? 鎴戞湰鏉ュ彧鏄負浜嗘祴璇曡屽凡錛屼唬鐮佸氨闅忎究浜嗗啓浜嗐? 鏈兂鍐欎竴涓甫鐣岄潰鍙戦佹暟鎹寘鐨勭▼搴忥紝鍙戠幇娌℃湁閭d箞澶氱簿鍔涘仛榪欎釜浜嬫儏錛屼笉鍍忎互鍓嶅湪瀛︽牎浜嗐?br /> 浠g爜宸ョ▼錛?a href="/Files/xvsdf100/Sygate.zip">/Files/xvsdf100/Sygate.zip</a><a href="/Files/xvsdf100/InStall.zip"><br /> <font color="#000000">椹卞姩錛?/font> </a><a href="/Files/xvsdf100/InStall.zip"> <div style="display: inline !important; ">/Files/xvsdf100/InStall.zip</div> </a><img src ="http://www.shnenglu.com/xvsdf100/aggbug/201297.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/xvsdf100/" target="_blank">灝忛奔鍎?/a> 2013-06-25 17:11 <a href="http://www.shnenglu.com/xvsdf100/archive/2013/06/25/201297.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.syggzy.org.cn" target="_blank">久久久精品日本一区二区三区</a>| <a href="http://www.0r2kd.cn" target="_blank">热99RE久久精品这里都是精品免费</a>| <a href="http://www.818jk.cn" target="_blank">性做久久久久久久久老女人</a>| <a href="http://www.qqzhuti.cn" target="_blank">国产精品久久久久9999</a>| <a href="http://www.yuyingfus.cn" target="_blank">亚洲精品乱码久久久久久中文字幕</a>| <a href="http://www.99j9.cn" target="_blank">亚洲伊人久久综合中文成人网</a>| <a href="http://www.yunshujia.cn" target="_blank">久久人妻少妇嫩草AV蜜桃</a>| <a href="http://www.999966.com.cn" target="_blank">久久久久黑人强伦姧人妻</a>| <a href="http://www.hthotel.com.cn" target="_blank">精品久久人人爽天天玩人人妻 </a>| <a href="http://www.w-sh.cn" target="_blank">久久精品视屏</a>| <a href="http://www.tjjobs.com.cn" target="_blank">国产精品久久久久久久午夜片</a>| <a href="http://www.bolson.cn" target="_blank">精品国产福利久久久</a>| <a href="http://www.sony888.cn" target="_blank">亚洲综合久久综合激情久久 </a>| <a href="http://www.lushihu.cn" target="_blank">国产精品久久久久久</a>| <a href="http://www.qkl888.cn" target="_blank">国产精品青草久久久久婷婷</a>| <a href="http://www.hvgt.cn" target="_blank">免费观看久久精彩视频</a>| <a href="http://www.tomp3.cn" target="_blank">狠狠人妻久久久久久综合蜜桃</a>| <a href="http://www.biancheng88.cn" target="_blank">久久久久久久综合日本亚洲</a>| <a href="http://www.miror.com.cn" target="_blank">中文精品久久久久国产网址</a>| <a href="http://www.ahsxd.org.cn" target="_blank">99久久人人爽亚洲精品美女</a>| <a href="http://www.csrencaiwd.cn" target="_blank">久久精品国产99久久香蕉</a>| <a href="http://www.ttwa.com.cn" target="_blank">亚洲午夜无码久久久久小说</a>| <a href="http://www.epcinet.cn" target="_blank">久久亚洲精精品中文字幕</a>| <a href="http://www.gm53.cn" target="_blank">99精品久久久久久久婷婷</a>| <a href="http://www.weipengdq.cn" target="_blank">久久久久国产</a>| <a href="http://www.52cjw.cn" target="_blank">久久久女人与动物群交毛片</a>| <a href="http://www.ok66668.cn" target="_blank">99热精品久久只有精品</a>| <a href="http://www.kbsfrp.cn" target="_blank">婷婷久久综合</a>| <a href="http://www.ytmsw.cn" target="_blank">国产精品99久久久久久人</a>| <a href="http://www.gm53.cn" target="_blank">久久久亚洲精品蜜桃臀</a>| <a href="http://www.9bexgq.cn" target="_blank">久久狠狠高潮亚洲精品</a>| <a href="http://www.sglshoes.cn" target="_blank">国产三级观看久久</a>| <a href="http://www.323r.cn" target="_blank">久久久久久人妻无码</a>| <a href="http://www.mayifu.cn" target="_blank">久久久久97国产精华液好用吗</a>| <a href="http://www.pbti.com.cn" target="_blank">漂亮人妻被中出中文字幕久久</a>| <a href="http://www.zynsbank.cn" target="_blank">潮喷大喷水系列无码久久精品</a>| <a href="http://www.brill-sh.com.cn" target="_blank">国产国产成人久久精品</a>| <a href="http://www.fjzgh.cn" target="_blank">天堂久久天堂AV色综合</a>| <a href="http://www.jvfl.cn" target="_blank">理论片午午伦夜理片久久</a>| <a href="http://www.9dqmu.cn" target="_blank">欧美综合天天夜夜久久</a>| <a href="http://www.bwart.com.cn" target="_blank">精产国品久久一二三产区区别 </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>