锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧美中文日韩v在线观看,国产精品青草综合久久久久99,日韩图片一区http://m.shnenglu.com/true/category/3800.htmlzh-cnWed, 12 Jan 2011 18:03:53 GMTWed, 12 Jan 2011 18:03:53 GMT60Buffer綾誨氨搴旇綆鍗曪紝鐩磋http://m.shnenglu.com/true/archive/2011/01/13/138422.htmltruetrueWed, 12 Jan 2011 16:51:00 GMThttp://m.shnenglu.com/true/archive/2011/01/13/138422.htmlhttp://m.shnenglu.com/true/comments/138422.htmlhttp://m.shnenglu.com/true/archive/2011/01/13/138422.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/138422.htmlhttp://m.shnenglu.com/true/services/trackbacks/138422.html闃呰鍏ㄦ枃

true 2011-01-13 00:51 鍙戣〃璇勮
]]>
ACE涓畝鏄撶殑搴忓垪鍖栨満鍒訛細ACE_OutputCDR/ACE_InputCDRhttp://m.shnenglu.com/true/archive/2010/12/26/137484.htmltruetrueSun, 26 Dec 2010 01:52:00 GMThttp://m.shnenglu.com/true/archive/2010/12/26/137484.htmlhttp://m.shnenglu.com/true/comments/137484.htmlhttp://m.shnenglu.com/true/archive/2010/12/26/137484.html#Feedback2http://m.shnenglu.com/true/comments/commentRss/137484.htmlhttp://m.shnenglu.com/true/services/trackbacks/137484.html
#include <iostream>
#include 
<string>
#include 
<ace/OS.h>
#include 
<ace/String_Base.h>
#include 
<ace/CDR_Stream.h>
using namespace std;
#pragma comment(lib,
"aced")

int main(int argc, char* argv[])
{
    cout 
<< "ACE CDR demo" << endl;

    ACE_CString sAppName 
= "CDRDemo",sAppName2;
    ACE_CDR::Long nUID 
= 123456,nUID2;
    ACE_CDR::Float nfPosX 
= 120.51,nfPosX2;
    ACE_CDR::Double ndScore 
= 120.51,ndScore2;
    ACE_CString sDummy 
= "another string",sDummy2;
    ACE_CDR::Short  nsLength 
= 10,nsLength2;

    ACE_OutputCDR outCDR(ACE_DEFAULT_CDR_BUFSIZE);    
    
    outCDR 
<< nUID;
    outCDR 
<< nfPosX;
    outCDR 
<< ndScore;
    outCDR 
<< sAppName;//鍐欏瓧絎︿覆鏃訛紝鍏堝啓鍏ュ瓧絎︿覆鐨勯暱搴?/span>
    outCDR << sDummy;
    outCDR 
<< nsLength;

    cout 
<< "OutputCDR size = " << outCDR.length() << endl;

    
//鍙互閫氳繃socket鍙戦佸嚭鍘?鑰屽湪鏈嶅姟绔繘琛屼笅闈㈢殑瑙f瀽
    
//1.ACE_Message_Block *ACE_OutputCDR::begin (void)
    
//2.閫氳繃ACE_SOCK_Stream鍙戦佸嚭鍘?nbsp;   

    ACE_InputCDR inCDR(outCDR);

    inCDR 
>> nUID2;
    inCDR 
>> nfPosX2;
    inCDR 
>> ndScore2;
    inCDR 
>> sAppName2;
    inCDR 
>> sDummy2;
    inCDR 
>> nsLength2;
        

    ACE_ASSERT(nUID 
== nUID2);
    ACE_ASSERT(nfPosX 
== nfPosX2);
    ACE_ASSERT(ndScore 
== ndScore2);
    ACE_ASSERT(sAppName 
== sAppName2);
    ACE_ASSERT(sDummy 
== sDummy2);
    ACE_ASSERT(nsLength 
== nsLength2);

    cout 
<< "test ok." << endl;

    
return 0;
}

鍋囪嫢鏈夊涓嬬殑demo.idl,鍐呭濡備笅錛?br>
      struct user_info
      {
            int user_id;
            string user_name;            
      }
鍒╃敤idl_gen鐢熸垚浠g爜鏃訛細
      (1)濡傛灉鏄鏡鍏ュ紡鐨勬柟妗堬紝鍒欑敓鎴恥ser_info綾繪椂錛岃嚜鍔ㄦ坊鍔犳垚鍛極utputCDR鍜孖nputCDR鎴愬憳錛屽茍娣誨姞pack(ACE_Message_Block &* msg)鍜宲arse(ACE_Message_Block * msg)鎴愬憳鍑芥暟錛屽湪pack鍜宲arse閲岄潰錛岃皟鍒板浜庣殑CDR綾伙紝鎸夌収綾諱腑鏁版嵁鎴愬憳鐨勫0鏄庨『搴忎緷嬈″簭鍒楀寲錛屽弽搴忓垪鍖?br>      (2)濡傛灉鏄潪渚靛叆寮忔柟妗堬紝鍒欑敓鎴恥ser_info綾繪椂錛岀敓鎴愮嫭绔嬪嚱鏁扮殑pack(user_info& info, ACE_Message_Block &* msg)鍜宲arse(user_info& info,ACE_Message_Block * msg),pack鍜宲arse鐨勫嚱鏁板疄鐜板悓涓?br>

true 2010-12-26 09:52 鍙戣〃璇勮
]]>
ACE_Get_Opt瑙f瀽鍛戒護琛屽弬鏁?/title><link>http://m.shnenglu.com/true/archive/2010/11/09/133131.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Tue, 09 Nov 2010 15:53:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2010/11/09/133131.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/133131.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2010/11/09/133131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/133131.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/133131.html</trackback:ping><description><![CDATA[     鎽樿: ACE ACE_Get_Opt 鍛戒護琛?nbsp; <a href='http://m.shnenglu.com/true/archive/2010/11/09/133131.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/true/aggbug/133131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2010-11-09 23:53 <a href="http://m.shnenglu.com/true/archive/2010/11/09/133131.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>ACE_Thread_Mutex涓涓笉璺ㄥ鉤鍙扮殑鍦版柟http://m.shnenglu.com/true/archive/2010/10/23/131009.htmltruetrueSat, 23 Oct 2010 13:44:00 GMThttp://m.shnenglu.com/true/archive/2010/10/23/131009.htmlhttp://m.shnenglu.com/true/comments/131009.htmlhttp://m.shnenglu.com/true/archive/2010/10/23/131009.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/131009.htmlhttp://m.shnenglu.com/true/services/trackbacks/131009.htmlACE_Thread_Mutex鐨勬垚鍛橈紝 int acquire (ACE_Time_Value *tv);鍦╳indows涓嬫槸涓嶆敮鎸佺殑錛屾湁浜涘嚭浜烘剰鏂欙紝涔嬪墠涓鐩存病鐢ㄨ繃榪欎釜鍙傛暟錛屼粖澶╅犺疆瀛愶紝鍙傝僡ce鍙戠幇鐨勩?/p>

true 2010-10-23 21:44 鍙戣〃璇勮
]]>
浠跨収system v娑堟伅闃熷垪鐨勫唴瀛樻秷鎭槦鍒?/title><link>http://m.shnenglu.com/true/archive/2010/09/19/127031.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Sat, 18 Sep 2010 17:01:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2010/09/19/127031.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/127031.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2010/09/19/127031.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/127031.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/127031.html</trackback:ping><description><![CDATA[     鎽樿: 鍐呭瓨娑堟伅闃熷垪鏄湇鍔″櫒绔父鐢ㄧ殑鍩虹緇勪歡錛屼粬浣垮緱絎﹀悎鐢熶駭鑰?娑堣垂鑰呮ā鍨嬬殑涓や釜綰跨▼鎴栦袱緇勭嚎紼嬩箣闂寸殑閫氳鐪嬭搗鏉ユ洿鍔犳竻鏅?nbsp; <a href='http://m.shnenglu.com/true/archive/2010/09/19/127031.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/true/aggbug/127031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2010-09-19 01:01 <a href="http://m.shnenglu.com/true/archive/2010/09/19/127031.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>ace涓父鐢ㄧ被鐨勪嬌鐢ㄤ婦渚嬶紙涓嶆柇琛ュ厖錛?/title><link>http://m.shnenglu.com/true/archive/2008/04/13/46983.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Sun, 13 Apr 2008 08:32:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2008/04/13/46983.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/46983.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2008/04/13/46983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/46983.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/46983.html</trackback:ping><description><![CDATA[<p>#include "ace/Task.h"<br>#include <ace/Manual_Event.h><br>#include <ace/Auto_Event.h><br>#include "ace/OS.h"<br>#include <ace/Date_Time.h><br>#include <iostream></p> <p>using namespace std;<br>#pragma comment(lib,"aced")</p> <p>/**<br>* if MANUAL reset<br>*    sleep till the event becomes signaled<br>*    event remains signaled after wait() completes.<br>* else AUTO reset<br>*    sleep till the event becomes signaled<br>*    event resets wait() completes.<br>*/<br>//ACE_Manual_Event mevent;<br>ACE_Auto_Event   auto_event;<br>class TaskTest : public ACE_Task_Base<br>{<br>public:<br> int svc()<br> {<br>  cout << "task base test" << endl;<br>  ACE_Date_Time dt;<br>  cout << "y = " << dt.year() << endl;<br>  cout << "m = " << dt.month() << endl;<br>  cout << "s = " << dt.second() << endl;<br>  ACE_OS::sleep(2);<br>  //mevent.signal();<br>  auto_event.signal();<br>  return 0;<br> }<br>protected:<br>private:<br>};<br>int main(int argc, char* argv[])<br>{<br> TaskTest tt;<br> tt.activate();<br> //mevent.wait();<br> auto_event.wait();<br> tt.wait();<br> return 0;<br>}<br></p> <img src ="http://m.shnenglu.com/true/aggbug/46983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2008-04-13 16:32 <a href="http://m.shnenglu.com/true/archive/2008/04/13/46983.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>ACE鍦↙inux鐜涓嬬殑緙栬瘧瀹夎[杞琞http://m.shnenglu.com/true/archive/2007/07/15/28065.htmltruetrueSun, 15 Jul 2007 05:06:00 GMThttp://m.shnenglu.com/true/archive/2007/07/15/28065.htmlhttp://m.shnenglu.com/true/comments/28065.htmlhttp://m.shnenglu.com/true/archive/2007/07/15/28065.html#Feedback1http://m.shnenglu.com/true/comments/commentRss/28065.htmlhttp://m.shnenglu.com/true/services/trackbacks/28065.html                [Author by Jet Yan in April 4,2005]

絎竴姝?璁劇疆ACE_ROOT鐜鍙橀噺
錛?錛塭xport ACE_ROOT=/home/jet/ACE_wrappers
export LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH

錛?錛夋垨鑰呯洿鎺ュ湪鐢ㄦ埛鐩綍涓嬬紪杈?bashrc鏂囦歡錛屽唴瀹瑰涓嬶細
ACE_ROOT=/home/jet/ACE_wrappers
export ACE_ROOT
LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
鐒跺悗閲嶆柊鐧婚檰

錛?錛夊彟涓縐嶆柟娉曟槸淇敼緋葷粺鐨?etc/profile鏂囦歡錛堜笉榪囪繖鏍瘋繕鏄互鐢ㄦ埛鍙橀噺涓?br>浼樺厛璁劇疆錛屽嵆濡傛灉宸茬粡鎸夌収涓婇潰鐨勪袱縐嶆柟娉曡繘琛屼簡璁劇疆錛岄偅涔堜互涓嬬殑璁劇疆灝嗕笉
浼氳緋葷粺閲囩敤銆傦級
“vi /etc/profile”
鍦ㄥ叾涓姞鍏?琛?br>ACE_ROOT=/opt/ACE
export ACE_ROOT
LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
鎴戞槸鍔犲湪“export PATH USER….”鍚庣殑銆傚畬鎴愬悗灝?etc/profile鎵ц涓嬈★紝鍛戒護錛?br>“chmod 555 /etc/profile”
“/etc/profile”
榪欐牱鎴戜滑鐨凙CE_ROOT灝辮緗ソ浜嗭紝鍙互鐢ㄥ涓嬪懡浠ゆ煡鐪婣CE_ROOT鏄惁璁劇疆濂戒簡錛?br>“echo $ACE_ROOT”
榪欎釜鏃跺欐渶濂絩eboot鍚姩涓嬈inux銆?br>-------------------------------------------------------------------

絎簩姝?瑙e帇鍑篈CE-install.sh鏂囦歡騫朵慨鏀?br>錛?錛夊湪/home/jet涓嬪緩绔嬪瓙鐩綍ACEInstall錛屽皢ACE.tar.gz涓婁紶鑷寵鐩綍

錛?錛変粠ACE.tar.gz瑙e帇鍑哄崟涓枃浠禔CE-install.sh錛?br>tar –zxvf ACE.tar.gz ACE_wrappers/ACE-install.sh

錛?錛堿CE-install.sh鏀懼湪鍝釜鐩綍涓嬫棤鎵璋擄紝鍥犱負瀹夎鐩綍鏄敱鍒氭墠璁懼畾鐨?ACE_ROOT鍐沖畾鐨勩?br>
錛?錛塿i ACE-install.sh
鎴戜滑鍙互鐪嬪埌緙虹渷鐨勶紝榪欎釜鏂囦歡鏄敤鏉ュ湪UNIX涓嬪仛瀹夎鐨勩傛墍浠ユ垜浠灝嗗叾涓殑鏈?br>鍏砋NIX鐨勯儴鍒嗘崲鎴恖inux鍗沖彲銆?br>“MY_ACEDIR=${HOME}/aceconfig” -->> “MY_ACEDIR=/home/my/ACE”
“MY_ACE_CONFIG=config-sunos5.4-sunc++-4.x.h” -->> “MY_ACE_CONFIG=config-linux.h”
“MY_ACE_GNU_MACROS=platform_sunos5_sunc++.GNU” -->> “MY_ACE_GNU_MACROS=platform_linux.GNU”
濂戒簡錛屾枃浠朵慨鏀瑰畬姣曪紝淇濆瓨閫鍑?#8220;:wq”銆?br>-------------------------------------------------------------------

絎笁姝?榪愯ACE-install.sh錛坰hell鑴氭湰錛夊畨瑁匒CE
錛?錛夊綋鍓嶇洰褰?home/jet/ACEInstall/ACE_wrappers

錛?錛変慨鏀笰CE-install.sh鐨勫睘鎬э紝浣垮叾鍙墽琛?br>chmod 777 ACE-install.sh

錛?錛夋墽琛岋細
./ACE-install.sh
姝ゅ悗灝嗘槸杈冮暱鏃墮棿鐨勮В鍖呫佺紪璇戠瓑寰呮椂闂淬傝繖涓繃紼嬪皢涓嶄細鍑虹幇浠諱綍閿欒錛屽洜涓哄畨瑁呰剼鏈?br>灝嗕負鎴戜滑鍋氬緢澶氫簨鎯咃紝濡傦細鐢熸垚config.h錛岀敓鎴恜latform_macros.GNU銆傦紙鍗充嬌鍑虹幇鍒犻櫎
鏂囦歡鐨勯敊璇紝瀵圭粨鏋滃簲璇ユ病鏈夊獎鍝嶏紝閬囧埌榪欑鎯呭喌瑕佸叿浣撳垎鏋愪竴涓嬨傦級
鍥犳灝變笉闇瑕佹寜ACE-install.html涓鐨勯偅鏍鋒墜宸ュ仛濡備笅鏀瑰姩錛?br>  鍦?ACE_ROOT/ace鐩綍涓?
  ln -s config-linux.h config.h
  鍦?ACE_ROOT/include/makeinclude/鐩綍涓?
  ln -s platform_linux.GNU platform_macros.GNU
錛圵indows涓病鏈夋枃浠惰繛鎺ヨ繖涓璇達紝鎵浠ヨ鑷繁鐢熸垚涓涓猚onfig.h鏂囦歡錛屽啀鍦ㄥ畠鐨勯噷闈㈠姞涓
鍙ヨ瘽“#include "ace/config-win32.h"”銆傦級

錛?錛夊鏋滅紪璇戜腑鍑虹幇閿欒錛屽“../apps/gperf”絳夛紝璇風紪杈?ACE_ROOT/apps涓嬬殑Makefile錛?br>灝嗗叾涓殑鏈夊叧“gperf”鐨勯儴鍒嗘敞閲婃帀錛岃繖涓笢瑗垮彧鏄竴涓緥瀛愶紝鍙互涓嶅幓緙栬瘧瀹冦?br>寮鴻皟涓涓嬶紝鐢ˋCE-install.sh鏉ュ畨瑁咃紝浼氱紪璇慉CE銆乼ests銆乤pps絳夈?br>鏈鍚庝細鐢熸垚libACE.so鍙妕ests銆乤pps涓嬩篃浼氬嚭鏉ュ緢澶氱粡榪囩紪璇戠殑鏂囦歡銆?br>褰撶劧濡傛灉浣犲彧鏄笅杞戒簡ACE.tar.gz榪欐牱鐨勫崟涓寘鏉ュ畨瑁咃紝浣犲彲浠ユ墜宸ユ敼鏂囦歡錛屽啀make錛?br>鍥犱負鍙紪璇慉CE錛屽伐浣滃氨灝戜簡寰堝錛屾墜宸ュ仛榪樺彲浠ユ帴鍙椼?br>
錛?錛夌紪璇戣繃紼嬫棩蹇楁斁鍦?tmp/myacemaker.err
-------------------------------------------------------------------

絎洓姝?鐩存帴嫻嬭瘯ACE鎻愪緵鐨勪緥瀛?br>錛?錛夊湪$ACE_ROOT/examples/Synch涓紝淇敼proc_sema.cpp鏂囦歡濡備笅錛?br>#include "ace/OS_NS_stdio.h"
鍦╩ain鍑芥暟涓?br>ACE_OS::printf("Hello,World! \n");

錛?錛夋墽琛宮ake錛孫K鍚庤繍琛屻?br>
錛?錛夊鏋滆繍琛屾椂瑁呭湪涓嶅埌share object錛屽彲鑳芥槸lib璺緞闂錛屽洜涓?so鏂囦歡鏄▼搴忚繍琛岃繃紼嬩腑
瑁呰澆鐨勶紝涓嶆槸鍦ㄧ紪璇戠殑鏃跺欙紝鍥犳瑕佽緗甃D_LIBRARY_PATH錛?br>[jet@S]$ export LD_LIBRARY_PATH=/home/jet/ACE_wrappers/lib:$LD_LIBRARY_PATH
-------------------------------------------------------------------

絎簲姝?鍐欎竴涓畝鍗曠殑紼嬪簭嫻嬭瘯涓涓婣CE
錛?錛夊湪/home/jet/涓嬫柊寤篈CETest瀛愮洰褰曪紝鍐欏ソ紼嬪簭濡俢lient.cpp錛屼笂浼犲埌璇ョ洰褰?br>
錛?錛夋嫹璐濈鍥涙鐨勯偅涓狹akefile鏂囦歡鍒拌鐩綍錛屽茍鍋氬涓嬩慨鏀?br>淇敼鍏朵腑杈撳嚭鏂囦歡鍚?#8220;BIN = hello”錛屽茍淇敼“
.obj/proc_sema.o .obj/proc_sema.so .shobj/proc_sema.o .shobj/proc_sema.so: proc_sema.cpp \”
涓悗闈㈢殑“proc_sema.cpp”鎴?#8220;client.cpp”銆?br>濂斤紝鎴戜滑鍙互緙栬瘧涓涓垜浠嚜宸辯殑ACE紼嬪簭浜嗭紝make鍗沖彲銆傚簲璇ヨ兘閫氳繃錛岀敓鎴愭墽琛屾枃浠禼lient錛?br>澶у皬澶х害涓?12Kb銆傝繍琛屼箣錛?#8220;./client”銆?br>-------------------------------------------------------------------

=================================================
鍙︿竴縐嶆洿涓虹洿鎺ョ殑瀹夎鏂規硶錛?br>
姝ラ1錛氳緗幆澧冨彉閲?br>export ACE_ROOT=/home/jet/ACE_wrappers
export LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH
涔熷彲浠ョ洿鎺ヤ慨鏀?bashrc鏂囦歡錛屼互鍏嶉鍑哄悗璁劇疆鐨勮繖浜涘彉閲忔秷澶?br>
[env][echo $ACE_ROOT]

姝ラ2錛?br>閽堝涓嶅悓鐗堟湰鍒涘緩涓や釜鏂囦歡閾炬帴:
  鍦?ACE_ROOT/ace鐩綍涓?
  ln -s config-linux.h config.h
  鍦?ACE_ROOT/include/makeinclude/鐩綍涓?
  ln -s platform_linux.GNU platform_macros.GNU

姝ラ3錛?br>鍦?ACE_ROOT鐩綍涓嬶紝鏂板緩涓涓洰褰曪紝鐢ㄤ互鎵цconfigure鐨勭粨鏋?br>  mkdir aaa
  cd aaa
鍦?ACE_ROOT/aaa涓繍琛?br>  ../configure
鍦ㄧ‘璁ょ粨鏋滄棤璇悗錛屾墽琛?
  make
OK錛?br>


[rm -f -r *]鍒犻櫎鐩綍涓嬫墍鏈夌殑鏂囦歡鍜屽瓙鐩綍-f鏄己鍒秄orce鍒犻櫎錛?r鏄唬琛ㄧ洰褰曚篃鍒犻櫎

[ldd 鍙墽琛屾枃浠禲 鏄劇ず璇ユ枃浠惰繍琛屾椂鍊欓渶瑕佺殑鍔ㄦ侀摼鎺ュ簱

[ipcs] 鏄劇ず緋葷粺鐨勫叡浜唴瀛樸佷俊鍙烽噺銆佹秷鎭槦鍒楃殑鎯呭喌 ipc show
[ipcrm <shm| msg| sem> id]



true 2007-07-15 13:06 鍙戣〃璇勮
]]>
ACE鍏充簬鏂囦歡鐨勬搷浣?/title><link>http://m.shnenglu.com/true/archive/2007/06/09/25911.html</link><dc:creator>true</dc:creator><author>true</author><pubDate>Sat, 09 Jun 2007 10:30:00 GMT</pubDate><guid>http://m.shnenglu.com/true/archive/2007/06/09/25911.html</guid><wfw:comment>http://m.shnenglu.com/true/comments/25911.html</wfw:comment><comments>http://m.shnenglu.com/true/archive/2007/06/09/25911.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/true/comments/commentRss/25911.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/true/services/trackbacks/25911.html</trackback:ping><description><![CDATA[ ACE_FILE_Addr file_addr;<br> file_addr.set("log.txt");<br> ACE_FILE_IO file;<br> ACE_FILE_Connector file_connector;<br> if (file_connector.connect(file,<br>        file_addr,<br>        0,<br>        ACE_Addr::sap_any,<br>        0,<br>        O_RDWR|O_CREAT|O_APPEND<br>        ) == -1)<br> {<br>  cout << "error" << endl;<br> } <img src ="http://m.shnenglu.com/true/aggbug/25911.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/true/" target="_blank">true</a> 2007-06-09 18:30 <a href="http://m.shnenglu.com/true/archive/2007/06/09/25911.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>ACE_NT_Service錛圵INDOWShttp://m.shnenglu.com/true/archive/2007/04/24/22741.htmltruetrueTue, 24 Apr 2007 09:55:00 GMThttp://m.shnenglu.com/true/archive/2007/04/24/22741.htmlhttp://m.shnenglu.com/true/comments/22741.htmlhttp://m.shnenglu.com/true/archive/2007/04/24/22741.html#Feedback1http://m.shnenglu.com/true/comments/commentRss/22741.htmlhttp://m.shnenglu.com/true/services/trackbacks/22741.htmlACE_NT_Service錛圵INDOWS錛?br>鏈漢鐨勮鐐癸紝SERVICE灝辨槸WINDOWS鐗堢殑DAEMON銆?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">ACE_NT_Service閫氳繃鍖呰涓鏁村WINDOWS鎻愪緵鐨凷ERVICE API瀹氫箟浜嗕竴涓帶鍒禢T SERVICE鐨勬帴鍙c傚簲鐢ㄧ▼搴忕戶鎵胯鎺ュ彛灝卞彲浠ュ疄鐜板拰UNIX涓奃AEMON鐩鎬技鐨勫姛鑳姐備笅闈㈠厛綆鍗曟弿榪癢INDOWSSERVICE紼嬪簭妗嗘灦錛屽啀璇︾粏鎻忚堪綾?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">ACE_NT_Service瀵筗INDOWS SERVICE紼嬪簭妗嗘灦鐨勫寘瑁呫?br>
WINDOWS SERVICE
涓涓畬鏁寸殑NT SERVICE紼嬪簭搴旇鍖呭惈浠ヤ笅鍥涢儴鍒嗭細
1.鎺у埗鍙板簲鐢ㄧ▼搴忕殑main鍑芥暟
2.SERVICE鍏ュ彛鍑芥暟ServiceMain
3.SERVICE CONTROL HANDLER錛孲CM鍒╃敤璇ュ嚱鏁板拰SERVICE閫氫俊騫舵帶鍒剁▼搴忕殑璧峰仠銆?br>4.SERVICE瀹夎鍜屽嵏杞藉櫒

ServiceMain鍜孲ervice Control Handler
棣栧厛鎴戜滑鏉ヨ璁篠erviceMain鍜孲ervice Control Handler銆俉INDOWS瑙勫畾姣忎釜SERVICE閮芥嫢鏈夎嚜宸辯嫭绔嬬殑ServiceMain浠ュ強Service Control Handler鍑芥暟銆備富紼嬪簭璋冪敤StartServiceCtrlDispatcher鏃訛紝WINDOWS涓烘瘡涓猄ERVICE鍒涘緩涓涓嚎紼嬶紝騫朵笖鍦ㄦ柊綰跨▼涓繍琛孲erviceMain鍑芥暟銆係CM鍒╃敤Service Control Handler鍑芥暟鍜孲ERVICE紼嬪簭閫氫俊錛岀敤鎴鋒墽琛宻tart錛宻top錛宲ause浠ュ強continue絳夋搷浣滄椂錛孲CM閫氳繃Service Control Handler鍑芥暟鏉ユ帶鍒禨ERVICE鐨勮涓恒係ervice Control Handler鍑芥暟鍩烘湰涓婁細鍖呭惈涓涓猻witch璇彞鏉ュ鐞嗘瘡縐嶆儏鍐點?br>
瀹夎/鍗歌澆SERVICE
WINDOWS鎻愪緵涓浜汚PI鏉ュ畨瑁?鍗歌澆SERVICE錛岃繖鏍鋒垜浠氨鍙互涓嶄嬌鐢ㄦ敞鍐屽嚱鏁板氨鑳藉湪緋葷粺涓敞鍐岃繖浜涜妭鐐廣傝繖浜汚PI鍒嗗埆鏄疌reateService鍜孌eleteService銆傝瀹夎SERVICE錛岄渶瑕佸厛鍒╃敤鍑芥暟OpenSCManager鎵撳紑SCM鏁版嵁搴擄紝鎺ョ潃鍒╃敤SERVICE鐨勪簩榪涘埗鏂囦歡璺緞璋冪敤CreateService錛屽湪璋冪敤CreateService鏃墮渶瑕佷負SERVICE鎸囧畾鍚嶇О錛屽師鍥犳槸浣跨敤DeleteService鍒犻櫎鏈嶅姟鏃墮渶瑕佸埄鐢ㄨ鏍囪瘑銆?br>
ACE_NT_Service
鏌ョ湅ACE婧愮爜錛屽叾涓拰綾?ACE_NT_Service瀹炵幇瀵嗗垏鐩稿叧鐨勭殑鏂囦歡鏈塏T_Service.cpp銆丯T_Service.h銆丯T_Service.i銆?br>
ACE_NT_Service涓殑ServiceMain鍜孲ervice Control Handler
ServiceMain鍜孲ervice Control Handler瀹氫箟鍏鋒湁鍥哄畾妯″紡錛?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">ACE_NT_Service鎻愪緵瀹?define ACE_NT_SERVICE_DEFINE(SVCNAME, SVCCLASS, SVCDESC)鐢ㄤ簬綆鍖栧畾涔夈傚叿浣撶殑瀹忓畾涔夊彲浠ュ弬鑰傾CE浠g爜錛岃繖閲屼笉鍐嶅垪鍑猴紝榪欓噷鍙垎鏋愮浉鍏崇殑綾?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">ACE_NT_Service鐨勬垚鍛樺嚱鏁癶andle_control,init,open,wait鍜宖ini銆傚嚱鏁癶andle_control琚敤浜庡搷搴擲ERVICE DISPATCHER璇鋒眰,鍏跺繀欏誨拰SVC鍑芥暟浜や簰浠ュ獎鍝嶈姹傛帶鍒舵搷浣溿傜己鐪佸疄鐜板寘鎷琒ERVICE_CONTROL_STOP錛孲ERVICE_CONTROL_PAUSE錛孲ERVICE_CONTROL_CONTINUE錛孲ERVICE_CONTROL_INTERROGATE錛孲ERVICE_CONTROL_SHUTDOWN銆?br>
鍑芥暟handle_control鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>/* 璋冪敤stop_requested鍝嶅簲鍏抽棴鎿嶄綔 */
case SERVICE_CONTROL_SHUTDOWN:
case SERVICE_CONTROL_STOP:
this->stop_requested (control_code);
break;
/* 璋冪敤pause_requested鍝嶅簲鎸傝搗鎿嶄綔 */
case SERVICE_CONTROL_PAUSE:
this->pause_requested (control_code);
break;
/* 璋冪敤continue_requested鍝嶅簲鎸傝搗鍚庡惎鍔ㄦ搷浣?*/
case SERVICE_CONTROL_CONTINUE:
this->continue_requested (control_code);
break;
/* 璋冪敤interrogate_requested鎶ュ憡褰撳墠鐘舵?/
case SERVICE_CONTROL_INTERROGATE:
this->interrogate_requested (control_code);
break;

鍑芥暟open 鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>/* 鎶ュ憡鐘舵?*/
this->report_status (SERVICE_START_PENDING, 0);
/* 鎵ц鐢ㄦ埛浠g爜 */
int svc_return = this->svc ();

鍑芥暟fini 鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>/* 鎶ュ憡鐘舵?*/
return this->report_status (SERVICE_STOPPED, 0);

鍑芥暟stop_requested鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>/* 鎶ュ憡鐘舵?*/
this->report_status (SERVICE_STOP_PENDING);

鍑芥暟pause_requested鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>/* 鎶ュ憡鐘舵?*/
this->report_status (SERVICE_PAUSE_PENDING);
/* 鎸傝搗*/
this->suspend ();
/* 鎶ュ憡鐘舵?*/
this->report_status (SERVICE_PAUSED);

鍑芥暟continue_requested鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>/* 鎶ュ憡鐘舵?*/
this->report_status (SERVICE_CONTINUE_PENDING);
/* 鎭㈠*/
this->resume ();
/* 鎶ュ憡鐘舵?*/
this->report_status (SERVICE_RUNNING);

鍑芥暟interrogate_requested鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>/* 鎶ュ憡鐘舵?*/
this->report_status (0);
瀹夎/鍗歌澆SERVICE
ACE_NT_Service瀹氫箟涓や釜鎴愬憳鍑芥暟Insert錛宺emove鏉ュ畨瑁咃紙鍗歌澆錛塖ERVICE銆傚畠浠垎鍒湪鍐呴儴璋冪敤WINDOWS API鈥斺擟reateService浠ュ強DeleteService銆?

Insert鍑芥暟鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>
/* 鎵撳紑鍜宧ost()涓奡CManager鐨勯氫俊 */
SC_HANDLE sc_mgr = ACE_TEXT_OpenSCManager (this->host ()錛?#8230;…);
/* 浠ュ悕縐皀ame() 鍒涘緩鏈嶅姟 */
SC_HANDLE sh = ACE_TEXT_CreateService (sc_mgr,this->name (),this->desc (),
SERVICE_ALL_ACCESS,this->svc_status_.dwServiceType,start_type,
error_control,exe_path,……);
/* 鍏抽棴鍜孲CManager鐨勯氫俊 */
CloseServiceHandle (sc_mgr);
/* 鍏抽棴鏈嶅姟鍙ユ焺錛岄噸鏂板啓鍏ユ柊鍙ユ焺 */
if (this->svc_sc_handle_ != 0)
CloseServiceHandle (this->svc_sc_handle_);
this->svc_sc_handle_ = sh;

Remove鍑芥暟閮ㄥ垎鍏抽敭浠g爜瑙f瀽

/* 浠嶴CM涓垹闄nsert鍒涘緩鐨勬湇鍔″彞鏌?*/
if (DeleteService (this->svc_sc_handle()) == 0
&& GetLastError () != ERROR_SERVICE_MARKED_FOR_DELETE)
鎺у埗SERVICE
ACE_NT_Service瀹氫箟鎴愬憳鍑芥暟start_svc, stop_svc, pause_svc, continue_svc鍒嗗埆鐢ㄤ簬鍚姩銆佸仠姝€佹寕璧峰拰緇х畫鏈嶅姟銆?br>start_svc鍑芥暟鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>
/* 鍚姩鏈嶅姟 */
if (!ACE_TEXT_StartService (svc, argc, argv))
this->wait_for_service_state (SERVICE_RUNNING, wait_time);

stop_svc鍑芥暟鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>
/* 鍏抽棴鏈嶅姟 */
if (!ControlService (svc, SERVICE_CONTROL_STOP, &this->svc_status_))
this->wait_for_service_state (SERVICE_STOPPED, wait_time);

pause_svc鍑芥暟鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>
/* 鍚婅搗鏈嶅姟 */
if (!ControlService (svc, SERVICE_CONTROL_PAUSE,&this->svc_status_))
this->wait_for_service_state (SERVICE_PAUSED,wait_time);

continue_svc鍑芥暟鐨勯儴鍒嗗叧閿唬鐮佽В鏋?br>
/* 灝嗘寕璧蜂笟鍔¢噸鏂板惎鍔?*/
if (!ControlService (svc,SERVICE_CONTROL_CONTINUE,&this->svc_status_))
this->wait_for_service_state (SERVICE_RUNNING,wait_time);

涓浜涜緟鍔╁嚱鏁?br>svc_sc_handle閮ㄤ喚鍏抽敭浠g爜瑙f瀽

/* 鎵撳紑SCM */
SC_HANDLE sc_mgr = ACE_TEXT_OpenSCManager (this->host (),……)
if (sc_mgr != 0)
{
/* 鑾峰彇鏈嶅姟鍙ユ焺 */
this->svc_sc_handle_ = ACE_TEXT_OpenService (sc_mgr,……)
/* 鍏抽棴SCM */
CloseServiceHandle (sc_mgr);
}
/* 榪斿洖鑾峰彇鍒扮殑鏈嶅姟鍙ユ焺 */
return this->svc_sc_handle_;

wait_for_service_state閮ㄤ喚鍏抽敭浠g爜瑙f瀽

/* 鑾峰彇褰撳墠鏃墮棿 */
ACE_Time_Value time_out = ACE_OS::gettimeofday ();
/* 鍔犱笂絳夊緟鏃墮棿 */
if (wait_time != 0) time_out += *wait_time;
// Poll until the service reaches the desired state.
for (;
{
/* 鏌ヨ褰撳墠鐘舵?*/
service_ok = 0 != QueryServiceStatus (this->svc_sc_handle_, &this->svc_status_);
/* 濡傛灉宸茬粡鍒拌揪鎸囧畾鐘舵侊紝閫鍑哄驚鐜?*/
if (desired_state == this->svc_status_.dwCurrentState) break;
/* 濡傛灉瓚呭嚭鎸囧畾鏃墮棿錛岄鍑哄驚鐜?*/
if (wait_time != 0 && ACE_OS::gettimeofday () > time_out )
{ ……
break;
}
/* 鐫$湢絳夊緟 */
::Sleep (this->svc_status_.dwWaitHint);
}

report_status閮ㄤ喚鍏抽敭浠g爜瑙f瀽
/* 鍛婅瘔緋葷粺鏈嶅姟鏂扮殑鐘舵?*/
SetServiceStatus (this->svc_handle_,&this->svc_status_) ? 0 : -1;

 

 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=748930



true 2007-04-24 17:55 鍙戣〃璇勮
]]>
C10k[杞琞http://m.shnenglu.com/true/archive/2007/04/05/21283.htmltruetrueThu, 05 Apr 2007 01:00:00 GMThttp://m.shnenglu.com/true/archive/2007/04/05/21283.htmlhttp://m.shnenglu.com/true/comments/21283.htmlhttp://m.shnenglu.com/true/archive/2007/04/05/21283.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/21283.htmlhttp://m.shnenglu.com/true/services/trackbacks/21283.html鎽樿


緙栧啓榪炴帴鏁板法澶х殑楂樿礋杞芥湇鍔″櫒紼嬪簭鏃訛紝緇忓吀鐨勫綰跨▼妯″紡鍜宻elect妯″紡閮戒笉鍐嶉傜敤銆?
搴斿綋鎶涘純瀹冧滑錛岄噰鐢╡poll/kqueue/dev_poll鏉ユ崟鑾稩/O浜嬩歡銆傛渶鍚庣畝瑕佷粙緇嶄簡AIO銆?


鐢辨潵


緗戠粶鏈嶅姟鍦ㄥ鐞嗘暟浠ヤ竾璁$殑瀹㈡埛绔繛鎺ユ椂錛屽線寰鍑虹幇鏁堢巼浣庝笅鐢氳嚦瀹屽叏鐦棯錛岃繖琚О涓?
C10K闂銆傞殢鐫浜掕仈緗戠殑榪呴熷彂灞曪紝瓚婃潵瓚婂鐨勭綉緇滄湇鍔″紑濮嬮潰涓碈10K闂錛屼綔涓哄ぇ鍨?
緗戠珯鐨勫紑鍙戜漢鍛樻湁蹇呰瀵笴10K闂鏈変竴瀹氱殑浜嗚В銆傛湰鏂囩殑涓昏鍙傝冩枃鐚槸
<http://www.kegel.com/c10k.htmlhttp://www.kegel.com/c10k.htmls銆?

C10K闂鐨勬渶澶х壒鐐規槸錛氳璁′笉澶熻壇濂界殑紼嬪簭錛屽叾鎬ц兘鍜岃繛鎺ユ暟鍙婃満鍣ㄦц兘鐨勫叧緋誨線寰
鏄潪綰挎х殑銆備婦涓緥瀛愶細濡傛灉娌℃湁鑰冭檻榪嘋10K闂錛屼竴涓粡鍏哥殑鍩轟簬select鐨勭▼搴忚兘鍦?
鏃ф湇鍔″櫒涓婂緢濂藉鐞?000騫跺彂鐨勫悶鍚愰噺錛屽畠鍦?鍊嶆ц兘鏂版湇鍔″櫒涓婂線寰澶勭悊涓嶄簡騫跺彂
2000鐨勫悶鍚愰噺銆?

榪欐槸鍥犱負鍦ㄧ瓥鐣ヤ笉褰撴椂錛屽ぇ閲忔搷浣滅殑娑堣楀拰褰撳墠榪炴帴鏁皀鎴愮嚎鎬х浉鍏熾備細瀵艱嚧鍗曚釜浠誨姟
鐨勮祫婧愭秷鑰楀拰褰撳墠榪炴帴鏁扮殑鍏崇郴浼氭槸O(n)銆傝屾湇鍔$▼搴忛渶瑕佸悓鏃跺鏁頒互涓囪鐨剆ocket榪?
琛孖/O澶勭悊錛岀Н绱笅鏉ョ殑璧勬簮娑堣椾細鐩稿綋鍙錛岃繖鏄劇劧浼氬鑷寸郴緇熷悶鍚愰噺涓嶈兘鍜屾満鍣ㄦ?
鑳藉尮閰嶃備負瑙e喅榪欎釜闂錛屽繀欏繪敼鍙樺榪炴帴鎻愪緵鏈嶅姟鐨勭瓥鐣ャ?


鍩烘湰絳栫暐


涓昏鏈変袱鏂歸潰鐨勭瓥鐣ワ細1.搴旂敤杞歡浠ヤ綍縐嶆柟寮忓拰鎿嶄綔緋葷粺鍚堜綔錛岃幏鍙朓/O浜嬩歡騫惰皟搴﹀
涓猻ocket涓婄殑I/O鎿嶄綔錛?. 搴旂敤杞歡浠ヤ綍縐嶆柟寮忓鐞嗕換鍔″拰綰跨▼/榪涚▼鐨勫叧緋匯傚墠鑰呬富
瑕佹湁闃誨I/O銆侀潪闃誨I/O銆佸紓姝/O榪?縐嶆柟妗堬紝鍚庤呬富瑕佹湁姣忎換鍔?榪涚▼銆佹瘡浠誨姟1綰?
紼嬨佸崟綰跨▼銆佸浠誨姟鍏變韓綰跨▼姹犱互鍙婁竴浜涙洿澶嶆潅鐨勫彉縐嶆柟妗堛傚父鐢ㄧ殑緇忓吀絳栫暐濡備笅錛?

1.         Serve one client with each thread/process, and use blocking I/O
榪欐槸灝忕▼搴忓拰java甯哥敤鐨勭瓥鐣ワ紝瀵逛簬浜や簰寮忕殑闀胯繛鎺ュ簲鐢ㄤ篃鏄父瑙佺殑閫夋嫨(姣斿BBS)銆?
榪欑絳栫暐寰堣兘闅捐凍楂樻ц兘紼嬪簭鐨勯渶姹傦紝濂藉鏄疄鐜版瀬鍏剁畝鍗曪紝瀹規槗宓屽叆澶嶆潅鐨勪氦浜掗?
杈戙侫pache銆乫tpd絳夐兘鏄繖縐嶅伐浣滄ā寮忋?

2.         Serve many clients with single thread, and use nonblocking I/O
and readiness notification
榪欐槸緇忓吀妯″瀷錛宒atapipe絳夌▼搴忛兘鏄姝ゅ疄鐜扮殑銆備紭鐐瑰湪浜庡疄鐜拌緝綆鍗曪紝鏂逛究縐繪錛屼篃
鑳芥彁渚涜凍澶熺殑鎬ц兘錛涚己鐐瑰湪浜庢棤娉曞厖鍒嗗埄鐢ㄥCPU鐨勬満鍣ㄣ傚挨鍏舵槸紼嬪簭鏈韓娌℃湁澶嶆潅鐨?
涓氬姟閫昏緫鏃躲?

3.         Serve many clients with each thread, and use nonblocking I/O and
readiness notification
瀵圭粡鍏告ā鍨?鐨勭畝鍗曟敼榪涳紝緙虹偣鏄鏄撳湪澶氱嚎紼嬪茍鍙戜笂鍑篵ug錛岀敋鑷蟲煇浜汷S涓嶆敮鎸佸綰跨▼
鎿嶄綔readiness notification銆?

4.         Serve many clients with each thread, and use asynchronous I/O
鍦ㄦ湁AI/O鏀寔鐨凮S涓婏紝鑳芥彁渚涚浉褰撻珮鐨勬ц兘銆備笉榪嘇I/O緙栫▼妯″瀷鍜岀粡鍏告ā鍨嬪樊鍒浉褰?
澶э紝鍩烘湰涓婂緢闅懼啓鍑轟竴涓鏋跺悓鏃舵敮鎸丄I/O鍜岀粡鍏告ā鍨嬶紝闄嶄綆浜嗙▼搴忕殑鍙Щ妞嶆с傚湪
Windows涓婏紝榪欏熀鏈笂鏄敮涓鐨勫彲閫夋柟妗堛?

鏈枃涓昏璁ㄨ妯″瀷2鐨勭粏鑺傦紝涔熷氨鏄湪妯″瀷2涓嬪簲鐢ㄨ蔣浠跺浣曞鐞哠ocket I/O銆?


select 涓?nbsp;poll


鏈鍘熷鐨勫悓姝ラ樆濉?nbsp;I/O 妯″瀷鐨勫吀鍨嬫祦紼嬪涓嬶細

鍚屾闃誨 I/O 妯″瀷鐨勫吀鍨嬫祦紼?

浠庡簲鐢ㄧ▼搴忕殑瑙掑害鏉ヨ錛宺ead 璋冪敤浼氬歡緇緢闀挎椂闂達紝搴旂敤紼嬪簭闇瑕佺浉褰撳綰跨▼鏉ヨВ鍐?
騫跺彂璁塊棶闂銆傚悓姝ラ潪闃誨I/O瀵規鏈夋墍鏀硅繘錛?

緇忓吀鐨勫崟綰跨▼鏈嶅姟鍣ㄧ▼搴忕粨鏋勫線寰濡備笅錛?


do {

         Get Readiness Notification of all sockets

         Dispatch ready handles to corresponding handlers

                   If (readable) {
                            read the socket

                            If (read done)

                                     Handler process the request
                   }

                   if (writable)

                            write response

                   if (nothing to do)

                            close socket

} while(True)

闈為樆濉?nbsp;I/O 妯″瀷鐨勫吀鍨嬫祦紼?

寮傛闃誨 I/O 妯″瀷鐨勫吀鍨嬫祦紼?

鍏朵腑鍏抽敭鐨勯儴鍒嗘槸readiness notification錛屾壘鍑哄摢涓涓猻ocket涓婇潰鍙戠敓浜咺/O浜嬩歡銆?
涓鑸粠鏁欑涔﹀拰渚嬪瓙紼嬪簭涓鍏堝鍒扮殑鏄敤select鏉ュ疄鐜般係elect瀹氫箟濡備笅錛?


int select(int n, fd_set *rd_fds, fd_set *wr_fds, fd_set *ex_fds, struct
timeval *timeout);

Select鐢ㄥ埌浜唂d_set緇撴瀯錛屼粠man page閲屽彲浠ョ煡閬揻d_set鑳藉綰崇殑鍙ユ焺鍜孎D_SETSIZE鐩?
鍏熾傚疄闄呬笂fd_set鍦?nix涓嬫槸涓涓猙it鏍囧織鏁扮粍錛屾瘡涓猙it琛ㄧず瀵瑰簲涓嬫爣鐨刦d鏄笉鏄湪
fd_set涓俧d_set鍙兘瀹圭撼緙栧彿灝忎簬 FD_SETSIZE鐨勯偅浜涘彞鏌勩?

FD_SETSIZE榛樿鏄?024錛屽鏋滃悜fd_set閲屾斁鍏ヨ繃澶х殑鍙ユ焺錛屾暟緇勮秺鐣屼互鍚庣▼搴忓氨浼氬灝
鎺夈傜郴緇熼粯璁ら檺鍒朵簡涓涓繘紼嬫渶澶х殑鍙ユ焺鍙蜂笉瓚呰繃1024錛屼絾鏄彲浠ラ氳繃ulimit -n鍛戒護
/setrlimit鍑芥暟鏉ユ墿澶ц繖涓闄愬埗銆傚鏋滀笉騫鎬竴涓▼搴忓湪FD_SETSIZE=1024鐨勭幆澧冧笅緙?
璇戯紝榪愯鏃跺張閬囧埌ulimit –n > 1024鐨勶紝閭e氨鍙湁紲堟眰涓婂笣淇濅綉涓嶄細鍨帀浜嗐?/font>


鍦ˋCE鐜涓紝ACE_Select_Reactor閽堝榪欎竴鐐圭壒鍒綔浜嗕繚鎶ゆ帾鏂斤紝浣嗘槸榪樻槸鏈塺ecv_n
榪欐牱鐨勫嚱鏁伴棿鎺ョ殑浣跨敤浜唖elect錛岃繖闇瑕佸ぇ瀹舵敞鎰忋?

閽堝fd_set鐨勯棶棰橈紝*nix鎻愪緵浜唒oll鍑芥暟浣滀負select鐨勪竴涓浛浠e搧銆侾oll鐨勬帴鍙e涓嬶細


int poll(struct pollfd *ufds, unsigned int nfds, int timeout);

絎?涓弬鏁皍fds鏄敤鎴鋒彁渚涚殑涓涓猵ollfd鏁扮粍錛屾暟緇勫ぇ灝忕敱鐢ㄦ埛鑷鍐沖畾錛屽洜姝ら伩鍏嶄簡
FD_SETSIZE甯︽潵鐨勯夯鐑︺俇fds鏄痜d_set鐨勪竴涓畬鍏ㄦ浛浠e搧錛屼粠select鍒皃oll鐨勭Щ妞嶅緢鏂?
渚褲傚埌姝や負姝紝鑷沖皯鎴戜滑闈㈠C10K錛屽彲浠ュ啓鍑轟竴涓兘work鐨勭▼搴忎簡銆?

鐒惰孲elect鍜孭oll鍦ㄨ繛鎺ユ暟澧炲姞鏃訛紝鎬ц兘鎬ュ墽涓嬮檷銆傝繖鏈変袱鏂歸潰鐨勫師鍥狅細棣栧厛鎿嶄綔緋葷粺
闈㈠姣忔鐨剆elect/poll鎿嶄綔錛岄兘闇瑕侀噸鏂板緩绔嬩竴涓綋鍓嶇嚎紼嬬殑鍏沖績浜嬩歡鍒楄〃錛屽茍鎶婄嚎
紼嬫寕鍦ㄨ繖涓鏉傜殑絳夊緟闃熷垪涓婏紝榪欐槸鐩稿綋鑰楁椂鐨勩傚叾嬈★紝搴旂敤杞歡鍦╯elect/poll榪斿洖
鍚庝篃闇瑕佸浼犲叆鐨勫彞鏌勫垪琛ㄥ仛涓嬈℃壂鎻忔潵dispatch錛岃繖涔熸槸寰堣楁椂鐨勩傝繖涓や歡浜嬮兘鏄拰
騫跺彂鏁扮浉鍏籌紝鑰孖/O浜嬩歡鐨勫瘑搴︿篃鍜屽茍鍙戞暟鐩稿叧錛屽鑷碈PU鍗犵敤鐜囧拰騫跺彂鏁拌繎浼兼垚O(n2)
鐨勫叧緋匯?


epoll, kqueue, /dev/poll


鍥犱負浠ヤ笂鐨勫師鍥狅紝*nix鐨刪acker浠紑鍙戜簡epoll, kqueue, /dev/poll榪?濂楀埄鍣ㄦ潵甯姪
澶у錛岃鎴戜滑璺嫓涓夊垎閽熸潵鎰熻阿榪欎簺澶х銆傚叾涓璭poll鏄痩inux鐨勬柟妗堬紝kqueue鏄?
freebsd鐨勬柟妗堬紝/dev/poll鏄渶鍙よ佺殑Solaris鐨勬柟妗堬紝浣跨敤闅懼害渚濇閫掑銆?

綆鍗曠殑璇達紝榪欎簺api鍋氫簡涓や歡浜嬶細1.閬垮厤浜嗘瘡嬈¤皟鐢╯elect/poll鏃秌ernel鍒嗘瀽鍙傛暟寤虹珛
浜嬩歡絳夊緟緇撴瀯鐨勫紑閿錛宬ernel緇存姢涓涓暱鏈熺殑浜嬩歡鍏蟲敞鍒楄〃錛屽簲鐢ㄧ▼搴忛氳繃鍙ユ焺淇敼榪?
涓垪琛ㄥ拰鎹曡幏I/O浜嬩歡銆?.閬垮厤浜唖elect/poll榪斿洖鍚庯紝搴旂敤紼嬪簭鎵弿鏁翠釜鍙ユ焺琛ㄧ殑寮
閿錛孠ernel鐩存帴榪斿洖鍏蜂綋鐨勪簨浠跺垪琛ㄧ粰搴旂敤紼嬪簭銆?

鍦ㄦ帴瑙﹀叿浣揳pi涔嬪墠錛屽厛浜嗚В涓涓嬭竟緙樿Е鍙?edge trigger)鍜屾潯浠惰Е鍙?level trigger)
鐨勬蹇點傝竟緙樿Е鍙戞槸鎸囨瘡褰撶姸鎬佸彉鍖栨椂鍙戠敓涓涓猧o浜嬩歡錛屾潯浠惰Е鍙戞槸鍙婊¤凍鏉′歡灝卞彂
鐢熶竴涓猧o浜嬩歡銆備婦涓socket鐨勪緥瀛愶紝鍋囧畾緇忚繃闀挎椂闂寸殑娌夐粯鍚庯紝鐜板湪鏉ヤ簡100涓瓧
鑺傦紝榪欐椂鏃犺杈圭紭瑙﹀彂鍜屾潯浠惰Е鍙戦兘浼氫駭鐢熶竴涓猺ead ready notification閫氱煡搴旂敤紼?
搴忓彲璇匯傚簲鐢ㄧ▼搴忚浜?0涓瓧鑺傦紝鐒跺悗閲嶆柊璋冪敤api絳夊緟io浜嬩歡銆傝繖鏃舵潯浠惰Е鍙戠殑api浼?
鍥犱負榪樻湁50涓瓧鑺傚彲璇諱粠鑰岀珛鍗寵繑鍥炵敤鎴蜂竴涓猺ead ready notification銆傝岃竟緙樿Е鍙?
鐨刟pi浼氬洜涓哄彲璇昏繖涓姸鎬佹病鏈夊彂鐢熷彉鍖栬岄櫡鍏ラ暱鏈熺瓑寰呫?

鍥犳鍦ㄤ嬌鐢ㄨ竟緙樿Е鍙戠殑api鏃訛紝瑕佹敞鎰忔瘡嬈¢兘瑕佽鍒皊ocket榪斿洖EWOULDBLOCK涓烘錛屽惁鍒?
榪欎釜socket灝辯畻搴熶簡銆傝屼嬌鐢ㄦ潯浠惰Е鍙戠殑api鏃訛紝濡傛灉搴旂敤紼嬪簭涓嶉渶瑕佸啓灝變笉瑕佸叧娉?
socket鍙啓鐨勪簨浠訛紝鍚﹀垯灝變細鏃犻檺嬈$殑绔嬪嵆榪斿洖涓涓獁rite ready notification銆傚ぇ瀹?
甯哥敤鐨剆elect灝辨槸灞炰簬鏉′歡瑙﹀彂榪欎竴綾伙紝浠ュ墠鏈漢灝辯姱榪囬暱鏈熷叧娉╯ocket鍐欎簨浠朵粠鑰?
CPU 100%鐨勬瘺鐥呫?

epoll鐨勭浉鍏寵皟鐢ㄥ涓嬶細


int epoll_create(int size)


int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)


int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int
timeout)

epoll_create鍒涘緩kernel涓殑鍏蟲敞浜嬩歡琛紝鐩稿綋浜庡垱寤篺d_set銆?

epoll_ctl淇敼榪欎釜琛紝鐩稿綋浜嶧D_SET絳夋搷浣?

epoll_wait絳夊緟I/O浜嬩歡鍙戠敓錛岀浉褰撲簬select/poll鍑芥暟

epoll瀹屽叏鏄痵elect/poll鐨勫崌綰х増錛屾敮鎸佺殑浜嬩歡瀹屽叏涓鑷淬傚茍涓攅poll鍚屾椂鏀寔杈圭紭瑙?
鍙戝拰鏉′歡瑙﹀彂錛屼竴鑸潵璁茶竟緙樿Е鍙戠殑鎬ц兘瑕佸ソ涓浜涖傝繖閲屾湁涓畝鍗曠殑渚嬪瓙錛?


struct epoll_event ev, *events;

int kdpfd = epoll_create(100);

ev.events = EPOLLIN | EPOLLET;  // 娉ㄦ剰榪欎釜EPOLLET錛屾寚瀹氫簡杈圭紭瑙﹀彂

ev.data.fd =listener;

epoll_ctl(kdpfd, EPOLL_CTL_ADD, listener, &ev);

for(;;) {

   nfds = epoll_wait(kdpfd, events, maxevents, -1);

 

   for(n = 0; n < nfds; ++n) {

       if(events[n].data.fd == listener) {

           client = accept(listener, (struct sockaddr *) &local,

                           &addrlen);

           if(client < 0){

               perror("accept");

               continue;

           }

           setnonblocking(client);

           ev.events = EPOLLIN | EPOLLET;

           ev.data.fd = client;

           if (epoll_ctl(kdpfd, EPOLL_CTL_ADD, client, &ev) < 0) {

               fprintf(stderr, "epoll set insertion error: fd=%d0,

                       client);

               return -1;

           }

       }

       else

           do_use_fd(events[n].data.fd);

   }

}

綆鍗曚粙緇嶄竴涓媖queue鍜?dev/poll

kqueue鏄痜reebsd鐨勫疇鍎匡紝kqueue瀹為檯涓婃槸涓涓姛鑳界浉褰撲赴瀵岀殑kernel浜嬩歡闃熷垪錛屽畠涓?
浠呬粎鏄痵elect/poll鐨勫崌綰э紝鑰屼笖鍙互澶勭悊signal銆佺洰褰曠粨鏋勫彉鍖栥佽繘紼嬬瓑澶氱浜嬩歡銆?
Kqueue鏄竟緙樿Е鍙戠殑

/dev/poll鏄疭olaris鐨勪駭鐗╋紝鏄繖涓緋誨垪楂樻ц兘API涓渶鏃╁嚭鐜扮殑銆侹ernel鎻愪緵涓涓壒
孌婄殑璁懼鏂囦歡/dev/poll銆傚簲鐢ㄧ▼搴忔墦寮榪欎釜鏂囦歡寰楀埌鎿嶇旱fd_set鐨勫彞鏌勶紝閫氳繃鍐欏叆
pollfd鏉ヤ慨鏀瑰畠錛屼竴涓壒孌奿octl璋冪敤鐢ㄦ潵鏇挎崲select銆傜敱浜庡嚭鐜扮殑騫翠唬姣旇緝鏃╋紝鎵浠?
/dev/poll鐨勬帴鍙g幇鍦ㄧ湅涓婂幓姣旇緝絎ㄦ嫏鍙瑧銆?

C++寮鍙戯細ACE 5.5浠ヤ笂鐗堟湰鎻愪緵浜咥CE_Dev_Poll_Reactor灝佽浜唀poll鍜?dev/poll涓ょ
api錛岄渶瑕佸垎鍒湪config.h涓畾涔堿CE_HAS_EPOLL鍜孉CE_HAS_DEV_POLL鏉ュ惎鐢ㄣ?

Java寮鍙戯細 JDK 1.6鐨凷elector鎻愪緵浜嗗epoll鐨勬敮鎸侊紝JDK1.4鎻愪緵浜嗗/dev/poll鐨勬敮
鎸併傚彧瑕侀夋嫨瓚沖楂樼殑JDK鐗堟湰灝辮浜嗐?


寮傛I/O浠ュ強Windows


鍜岀粡鍏告ā鍨嬩笉鍚岋紝寮傛I/O鎻愪緵浜嗗彟涓縐嶆濊礬銆傚拰浼犵粺鐨勫悓姝/O涓嶅悓錛屽紓姝/O鍏佽榪?
紼嬪彂璧峰緢澶?nbsp;I/O 鎿嶄綔錛岃屼笉鐢ㄩ樆濉炴垨絳夊緟浠諱綍鎿嶄綔瀹屾垚銆傜◢鍚庢垨鍦ㄦ帴鏀跺埌 I/O 鎿嶄綔瀹?
鎴愮殑閫氱煡鏃訛紝榪涚▼灝卞彲浠ユ绱?nbsp;I/O 鎿嶄綔鐨勭粨鏋溿?

寮傛闈為樆濉?nbsp;I/O 妯″瀷鏄竴縐嶅鐞嗕笌 I/O 閲嶅彔榪涜鐨勬ā鍨嬨傝璇鋒眰浼氱珛鍗寵繑鍥烇紝璇存槑
read 璇鋒眰宸茬粡鎴愬姛鍙戣搗浜嗐傚湪鍚庡彴瀹屾垚璇繪搷浣滄椂錛屽簲鐢ㄧ▼搴忕劧鍚庝細鎵ц鍏朵粬澶勭悊鎿?
浣溿傚綋 read 鐨勫搷搴斿埌杈炬椂錛屽氨浼氫駭鐢熶竴涓俊鍙鋒垨鎵ц涓涓熀浜庣嚎紼嬬殑鍥炶皟鍑芥暟鏉ュ畬鎴?
榪欐 I/O 澶勭悊榪囩▼銆傚紓姝/O 妯″瀷鐨勫吀鍨嬫祦紼嬶細

寮傛闈為樆濉?nbsp;I/O 妯″瀷鐨勫吀鍨嬫祦紼?

瀵逛簬鏂囦歡鎿嶄綔鑰岃█錛孉IO鏈変竴涓檮甯︾殑濂藉錛氬簲鐢ㄧ▼搴忓皢澶氫釜緇嗙鐨勭鐩樿姹傚茍鍙戠殑鎻?
浜ょ粰鎿嶄綔緋葷粺鍚庯紝鎿嶄綔緋葷粺鏈夋満浼氬榪欎簺璇鋒眰榪涜鍚堝茍鍜岄噸鏂版帓搴忥紝榪欏鍚屾璋冪敤鑰岃█
鏄笉鍙兘鐨勨斺旈櫎闈炲垱寤哄拰璇鋒眰鏁扮洰鍚屾牱澶氱殑綰跨▼銆?

Linux Kernel 2.6鎻愪緵浜嗗AIO鐨勬湁闄愭敮鎸佲斺斾粎鏀寔鏂囦歡緋葷粺銆俵ibc涔熻鑳介氳繃鏉ョ嚎
紼嬫潵妯℃嫙socket鐨凙IO錛屼笉榪囪繖瀵規ц兘娌℃剰涔夈傛葷殑鏉ヨLinux鐨刟io榪樹笉鎴愮啛

Windows瀵笰IO鐨勬敮鎸佸緢濂斤紝鏈塈OCP闃熷垪鍜孖PCP鍥炶皟涓ょ鏂瑰紡錛岀敋鑷蟲彁渚涗簡鐢ㄦ埛綰у紓姝ヨ皟
鐢ˋPC鍔熻兘銆俉indows涓婣IO鏄敮涓鍙敤鐨勯珮鎬ц兘鏂規錛岃鎯呰鍙傝僊SDN 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1537545




true 2007-04-05 09:00 鍙戣〃璇勮
]]>
鍦ˋCE涓嬌鐢╡poll[zhuan]http://m.shnenglu.com/true/archive/2007/04/05/21281.htmltruetrueThu, 05 Apr 2007 00:32:00 GMThttp://m.shnenglu.com/true/archive/2007/04/05/21281.htmlhttp://m.shnenglu.com/true/comments/21281.htmlhttp://m.shnenglu.com/true/archive/2007/04/05/21281.html#Feedback0http://m.shnenglu.com/true/comments/commentRss/21281.htmlhttp://m.shnenglu.com/true/services/trackbacks/21281.html鍦ˋCE涓嬌鐢╡poll
2007-01-18 15:56

鏄熸湡鍥? 鍏湀 8th, 2006 

        寰堟樉鐒訛紝鏂囩珷鐨勬爣棰樺喅瀹氫簡鎴戜滑鏄湪linux涓嬩嬌鐢ˋCE銆傛垜浠煡閬揂CE鍦╨inux涓嬬己鐪佹槸鐢╯elect鏉ュ疄鐜癛eactor鐨勶紝epoll鐩稿浜巗elect鐨勫ソ澶勮繖閲屽氨涓嶅啀鍟板棪浜嗭紝鎴戜滑鐩存帴璁叉搷浣滄楠?
    絎竴錛氶噸鏂扮紪璇慉CE搴?br>     ACE搴撲腑閫氳繃ACE_Dev_Poll_Reactor綾繪潵鏀寔epoll,浣嗘槸ACE搴撶己鐪佺殑瀹夎鏄病鏈夌紪璇戣繖涓被鐨勶紝鎴戜滑瑕佸仛鐨勫氨鏄皢ACE_Dev_Poll_Reactor緙栬瘧榪炴帴鍒癆CE搴撲腑(faint,鍙堣閲嶆柊緙栬瘧ACE錛屽湪鎴戦偅鍙扮牬鏈嶅姟鍣ㄤ笂緙栬瘧涓嬈¢渶瑕佷竴涓灝忔椂).鎴戠殑鎿嶄綔緋葷粺鏄疪edhat linux AS4.0,ACE鐨勭増鏈槸5.4.10銆傛牴鎹瓵CE鍘嬬緝鍖呬腑鐨凙CE-INSTALL.html錛屾垜鏄敤”Building ACE with GNU Autoconf“榪欑鏂瑰紡鏉ュ畨瑁呯殑錛屽畨瑁呮楠ゅ涓?寰堢畝鍗?灝變笉緲昏瘧浜?:
       1 cd to the top-level ACE_wrappers directory.

       2.Create a subdirectory to hold your build’s configuration and built ACE version,     and   then change to the new directory:

       mkdir build

       cd build

     

       3.Note that you do not run the create_ace_build.pl utility mentioned in the Cloning the Source Tree section. The configure script takes care of creating all files and links that are needed.

Configure ACE for your platform by issuing the following command: c

       ../configure [options]

     
      4.Build ACE by typing make.

      5. Install ACE by typing make install.
      濂斤紝鐜板湪緇堜簬鍙互璁插浣曞皢ACE_Dev_Poll_Reactor緙栬瘧鍒癆CE搴撲腑鍘諱簡銆傚湪涓婅堪鐨勭涓姝ュ拰絎簩姝ヤ箣闂翠慨鏀笰CE_wrappers/ace/config-linux.h,澧炲姞涓琛岋細#define ACE_HAS_EVENT_POLL錛岀劧鍚庢墽琛岀2銆?姝ワ紝絎?姝?./configure鎵ц瀹屼箣鍚庯紝build鐩綍涓嬩細鐢熸垚涓浜涙枃浠跺拰鐩綍錛屾墦寮ACE_wrappers/build/ace/config.h,澧炲姞涓琛岋細#define ACE_HAS_EVENT_POLL銆傜劧鍚庢墽琛岀4姝ake鍜岀5姝ake install.OK錛屽湪婕暱鐨勭紪璇戜互鍚庯紝鏀寔epoll鐨凙CE搴撴葷畻瀹屾垚浜嗐?/p>

     絎簩錛氫慨鏀瑰簲鐢ㄧ▼搴?br>        搴旂敤紼嬪簭淇敼寰堢畝鍗曪紝涓よ浠g爜鎼炴巶,鍦ㄥ簲鐢ㄧ▼搴忓垵濮嬪寲鏃?蹇呴』鏄湪絎竴嬈′嬌鐢ˋCE_Reactor::instance()涔嬮棿)鍔犲叆:
       
        m_pDevPollReactor=new ACE_Dev_Poll_Reactor;
       ACE_Reactor::instance(new ACE_Reactor(m_pDevPollReactor));
      
       閭d箞鍦ㄥ悗緇殑瀵笰CE_Reactor::instance()鐨勮皟鐢ㄥ氨鏄嬌鐢ˋCE_Dev_Poll_Reactor鐨勫疄鐜頒簡銆?br>  
   絎笁錛氶噸鏂扮紪璇戝簲鐢ㄧ▼搴?br>  
        鍦ㄥ簲鐢ㄧ▼搴忕殑makefile涓姞鍏?nbsp;-DACE_HAS_EVENT_POLL,閲嶆柊make搴旂敤紼嬪簭銆侽K,鎵撳畬鏀跺伐銆?br>        



true 2007-04-05 08:32 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品首页| 国产午夜亚洲精品不卡| 99亚洲精品| 亚洲免费观看高清完整版在线观看熊 | 亚洲一区二区高清视频| 在线视频精品| 久久精品91久久香蕉加勒比| 久久亚洲综合色| 亚洲福利视频一区二区| 亚洲日本中文字幕区| 日韩午夜精品| 羞羞漫画18久久大片| 久久影音先锋| 欧美日韩系列| 国产三级欧美三级| 亚洲破处大片| 欧美一区二区三区久久精品| 免费看的黄色欧美网站| 亚洲毛片av| 久久久亚洲精品一区二区三区| 欧美精品一区二区在线播放| 国产精品美女久久久久久2018| 狠狠久久五月精品中文字幕| 亚洲美女诱惑| 久久久人人人| 一区二区三区www| 久久精品电影| 欧美日韩一区二区视频在线观看| 激情五月婷婷综合| 亚洲一级免费视频| 亚洲国产精品小视频| 亚洲在线网站| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品视频福利| 99re6这里只有精品| 久久婷婷国产综合尤物精品 | 久久精品夜色噜噜亚洲aⅴ| 欧美成人午夜激情在线| 国产视频欧美| 亚洲免费在线播放| 最新日韩精品| 欧美成人性网| 亚洲成人中文| 久久乐国产精品| 国产主播精品在线| 国产精品s色| 日韩系列在线| 欧美激情无毛| 免费亚洲电影在线| 在线成人中文字幕| 久久久噜噜噜久久中文字幕色伊伊| 亚洲美女视频在线观看| 欧美激情网友自拍| 亚洲精品美女91| 欧美激情视频免费观看| 久久久www| 一区二区三区自拍| 久久亚洲私人国产精品va| 午夜一区在线| 国产一区二区三区在线观看视频| 欧美一区二区三区四区在线观看地址| 日韩一区二区福利| 国产精品成人一区二区艾草| 中日韩在线视频| 一区二区三区久久网| 国产精品久久久久一区二区三区共| 亚洲一区精品电影| 亚洲女ⅴideoshd黑人| 国产伦理一区| 久久午夜视频| 欧美电影免费观看高清| 一卡二卡3卡四卡高清精品视频| 亚洲精品少妇30p| 欧美视频一区二区三区四区| 午夜精品亚洲一区二区三区嫩草| 亚洲影院一区| 在线电影国产精品| 亚洲精品国产精品乱码不99| 国产精品二区在线观看| 欧美一级久久久久久久大片| 欧美在线亚洲综合一区| 亚洲欧洲在线观看| 亚洲天堂av图片| 在线观看日韩av电影| 亚洲区欧美区| 国产精品色网| 欧美成人网在线| 欧美日韩一区综合| 久久综合图片| 欧美日韩精品欧美日韩精品一 | 亚洲女人av| 久久精品国产欧美激情| 亚洲精品国产精品国自产在线| 一区二区三区.www| 在线观看av不卡| 亚洲小说欧美另类婷婷| 亚洲国产激情| 亚洲欧美日韩国产成人精品影院| 狠狠色综合网| 亚洲天堂免费观看| 亚洲三级视频| 久久精品一本久久99精品| 国产精品99久久久久久久女警 | 久久婷婷国产综合尤物精品| 亚洲精品国产精品国自产观看浪潮 | 国产精品私房写真福利视频| 欧美777四色影视在线| 欧美日韩一区二区在线观看| 可以免费看不卡的av网站| 欧美视频在线播放| 亚洲国产一区视频| 国产视频一区二区三区在线观看| 亚洲久久一区| 亚洲精品国产无天堂网2021| 欧美自拍丝袜亚洲| 香港久久久电影| 欧美全黄视频| 亚洲国产高清一区| 在线日韩电影| 久久久久久久欧美精品| 久久国产88| 国产欧美精品xxxx另类| 亚洲视频电影图片偷拍一区| 日韩午夜av| 你懂的网址国产 欧美| 久热re这里精品视频在线6| 国产精品一区三区| 亚洲香蕉视频| 欧美一区二区三区在线观看| 国产精品老牛| 亚洲一区黄色| 欧美一区二区久久久| 国产精品入口福利| 亚洲欧美日韩国产成人| 欧美一级理论性理论a| 国产精品毛片大码女人| 一区二区三区不卡视频在线观看 | 伊人蜜桃色噜噜激情综合| 午夜精品影院在线观看| 久久不见久久见免费视频1| 国产精品夜色7777狼人| 亚洲欧美另类久久久精品2019| 午夜在线a亚洲v天堂网2018| 国产精品青草综合久久久久99 | 亚洲欧美日韩一区在线观看| 午夜精品久久久久久久99热浪潮| 国产精品网站在线观看| 亚洲欧美久久| 美腿丝袜亚洲色图| 91久久久精品| 欧美日韩一区二区精品| 亚洲小说区图片区| 久久久av毛片精品| 亚洲国产精品va在线看黑人| 欧美理论电影在线播放| 一区二区三区蜜桃网| 欧美在线一级va免费观看| 激情欧美亚洲| 欧美极品一区二区三区| 国产精品影音先锋| 亚洲欧洲精品一区二区三区不卡| 一本色道**综合亚洲精品蜜桃冫| 欧美日韩一区在线观看| 亚洲主播在线观看| 嫩草影视亚洲| 亚洲一区二区三区成人在线视频精品| 国产精品夜夜夜一区二区三区尤| 久久久另类综合| 一二三区精品福利视频| 久久久久久午夜| 99精品黄色片免费大全| 国产亚洲成av人在线观看导航| 美女亚洲精品| 午夜欧美精品| 亚洲精品综合久久中文字幕| 久久久夜精品| 亚洲欧美久久久| 亚洲精品1区2区| 国产视频自拍一区| 欧美日韩国产一区二区三区地区| 欧美影院视频| 亚洲天堂av在线免费观看| 欧美高清影院| 久久米奇亚洲| 亚洲免费视频中文字幕| 亚洲国产精品激情在线观看| 国产精品久久久久久久午夜 | 欧美亚洲在线视频| 亚洲日本免费电影| 国内精品一区二区| 国产精品福利影院| 欧美国产欧美综合 | 国产精品女人网站| 女生裸体视频一区二区三区| 亚洲欧美国产精品va在线观看| 亚洲精品国产品国语在线app | 红桃视频亚洲| 国产精品v日韩精品| 欧美成人精品三级在线观看| 久久精品国产99|