ʹÓÃDelphi±àдÆåÅÆÀàÓÎÏ· »ù´¡Æª(2)
¶ÔÓÚÍøÂçÓÎÏ·À´Ëµ£¬ËüºÍµ¥»ú°æÓÎÏ·×î´óµÄÇø±ð¾ÍÔÚÓÚÍøÂçͨÐŲ¿·Ö¡£¿ÉÒÔ˵£¬ÍøÂçͨÐÅÊǹ¹³ÉÍøÓεÄ×î»ù±¾ÔªËØ¡£ÔÚÕâÀïÎÒ²»ÏëÏêϸµÄÂÛÊöÈçºÎʹÓÃDELPHIÔÚWINDOWSϽøÐÐÍøÂç±à³Ì£¬ÒòΪÕâÊÇÒ»¸ö·Ç³£¸´ÔӵϰÌâ¡£ÕâÀïÎÒÖ»ÊÇÏë˵Ã÷ÔÚÎÒÉè¼ÆµÄÆåÅÆÀàÓÎÏ·ÖÐÈçºÎʵÏÖÓÎÏ·ÍøÂ粿·ÖµÄ¡£
¶ÔÓÚWINDOWSÀ´Ëµ£¬ËüµÄͨÐÅÄ£ÐÍ´ó¸Å·ÖΪ5ÖÖ¡£·Ö±ðÊÇ£º
1£ºSELECTÄ£ÐÍ¡£
2£ºWSAAsynSelectÄ£ÐÍ¡£
3£ºWSAEventSelectÄ£ÐÍ¡£
4£ºIOÖØµþÄ£ÐÍ
5£ºÍê³É¶Ë¿ÚÄ£ÐÍ¡£
¶ÔÓÚÐÔÄÜÀ´Ëµ£¬Íê³É¶Ë¿Ú¿ÉÒÔ¹ÜÀíÉÏÍòÁ¬½Ó£¨ÀíÂÛÁ¬½ÓÊýÁ¿¿ÉÒÔ´ïµ½65535¸ö£©£¬ËùÒÔÎÒÑ¡ÔñËüÀ´×÷ΪÎÒÓÎÏ··þÎñÆ÷µÄͨÐÅÄ£ÐÍ¡£
ÓÉÓÚÓÎÏ·¿Í»§¶ËºÍÓÎÏ··þÎñÆ÷µÄÁ¬½ÓÖ»ÐèÒªÒ»Ìõ¾Í¿ÉÒÔ£¬ËùÒÔÎÒÑ¡ÔñÁËSelectÄ£ÐÍ×÷Ϊ¿Í»§¶ËͨÐÅÄ£ÐÍ¡£
¹ØÓÚÈçºÎ±àдÍê³É¶Ë¿ÚÒÔ¼°ÔÚÍê³É¶Ë¿ÚÖÐÈçºÎ¼ÓÈëÐÄÌø£¬ÈçºÎ±ÜÃâÍøÂçͨÐÅÖеÄÕ³°üÏÖÏóÔÚÎÒÒÔǰµÄBLOGÖÐÒѾÓÐÁËÏêϸµÄ½²½â£¬ÓÉÓÚÆª·ùÌ«¶à£¬ÎÒÕâÀï¾Í²»ÔÚ½«ÆäÌù³ö¡£ÏêϸµÄ¿ÉÒԲο´ÎÒµÄBLOG ¡¶DELPHIÖÐÍê³É¶Ë¿Ú(IOCP)µÄ¼òµ¥·ÖÎö£¨1£©¡·-¡¶ DELPHIÖÐÍê³É¶Ë¿Ú(IOCP)µÄ¼òµ¥·ÖÎö£¨4£©¡·ºÍ¡¶ÍøÂçͨÐÅÖеÄÐÄÌø»úÖÆµÄʵÏÖ£¡¡·
µ«ÊÇÔÚÎÒ×î½üÖØÐ¼ì²é´úÂëµÄʱºò·¢ÏÖÎÒÒÔǰ¹ØÓÚIOCPµÄһЩ´¦Àí·½Ê½²»ºÏÊÊ»òÕßÓÐЩµØ·½ÊÇ´íÎóµÄ£¬ÎÒÒѾÔÚÒÔǰµÄBLOGÌû×ÓÖÐ×öÁËÏà¹ØµÄÐ޸ġ£
ÔÚÕâÀïÎÒÃÇÌÖÂÛÒ»ÏÂÈçºÎʵÏÖ¿Í»§¶ËͨÐÅÄ£ÐÍ(SelectÄ£ÐÍ)¡£¶ÔÓÚÊìÏ¤ÍøÂç±à³ÌµÄ³ÌÐòÔ±À´Ëµ£¬±àдһ¸öSELECTͨÐÅÄ£ÐÍÊÇÒ»¼þºÜ¼òµ¥µÄÊ£¬ÒòΪËüÊÇ5ÖÐͨÐÅÄ£ÐÍÖÐ×î¼òµ¥µÄÒ»ÖÖ¡£
±àдselectÄ£Ð͵ĴúÂëÈçÏ£º
Var
Fsocket£ºTsokcet;
procedure Star;
var
CliAddrIn:TSockAddrIn;
hThread:THandle;
ThreadID,outByte:DWORD;
keep_alive,out_keep_alive:TTimeVal;
iAddrSize,opt,I:Integer;
begin
//¼ÓÔØSOCKET,ÎÒʹÓõÄÊÇ2.2°æÎªÁ˺óÃæ·½±ã¼ÓÈëÐÄÌø
if WSAStartUp($202, wsData) <> 0 then
begin
WSACleanup();
end;
//´´½¨Ò»¸öÌ×½Ó×Ö
Fsocket:=socket(AF_INET,SOCK_STREAM,0);
if Fsocket =SOCKET_ERROR then
begin
closesocket(Fsocket);
end
else
begin
//ÕâÀïÌîÈëʵ¼ÊµÄ·þÎñÆ÷IPµØÖ·ºÍ·þÎñÆ÷¼àÌý¶Ë¿Ú
CliAddrIn.sin_addr.s_addr:=inet_addr(Pchar(‘127.0.0.1’));
Ïà¹ØÎĵµ£º
VCÉùÃ÷
HANDLE CreateMutex(
¡¡¡¡LPSECURITY_ATTRIBUTES lpMutexAttributes, // SD
¡¡¡¡BOOL bInitialOwner, // initial owner
¡¡¡¡LPCTSTR lpName // object name
¡¡¡¡);
delphiÉùÃ÷£º
function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle; stdcall;
´´½ ......
³£Íü¼Ç£¬ÔÚ´Ë×ö±Ê¼Ç¡£
Õ⼸¸öº¯Êý¶¼°üº¬ÔÚStrUtilsÖУ¬ËùÒÔÐèÒªuses StrUtils;
¼ÙÉè×Ö·û´®ÊÇ Dstr := ’Delphi is the BEST’, ÄÇô
LeftStr(Dstr, 5) := ’Delph’
MidStr(Dstr, 6, 7) := ’ ......
DirectoryExists('C:\WINDOWS'):Boolean;¼ì²âÎļþ¼ÐÊÇ·ñ´æÔÚ£¡
FileExists('c:\Dir.txt'):Boolean;¼ì²âÎļþÊÇ·ñ´æÔÚ£¡
EDIT×é¼þ
OnChange µ±±à¼¿òÖеÄÄÚÈÝ·¢Éú±ä»¯Ê±´¥·¢¸Ãʼþ
OnKeyPress µ±°´ÏÂÒ»¸ö°´¼üʱ£¬´¥·¢¸Ãʼþ
OnEnter ±à¼¿ò»ñµÃÊäÈë½¹µãʱ£¬´¥·¢¸Ãʼþ
MEMO×éºÏ
WordWrap ÓÃÓÚÉ趨Momo×é¼þÊÇ·ñ¾ßÓÐ×Ô¶ ......
Õâ¸ö±¾À´ÎÒÎÒÔÚDELPHIºÐ×Ó¿´µ½µÄ£¬ºóÀ´ÎÒ¶ÔÆä×÷ÁËÒ»µãÐ޸ģ¬ÕâÀïÉÏÈ«²¿´úÂ룬¿ÉÒÔÖ±½ÓÓÃ
Ê×ÏÈÓÐÁ½¸ö×Ô¶¨µÄת»»º¯Êý£º
function myStrToHex(s:string):string; //×Ö´®×ª16½øÖÆ
var
TmpStr:string;
i:integer;
begin
TmpStr:='';
for i:=1 to Length(s)do
TmpStr:=TmpStr+IntToHex(ord(s[i]),2);
Res ......
windows¼¸¸öÖØÒªµÄÄÚºËÊý¾Ý½á¹¹ËäÈ»ÍøÉÏÒ²ÓÐÏà¹ØµÄ¶¨Ò壬µ«¸öÈ˾õµÃ²»ÆëÈ«¶¨Òå²»¹æ·¶£¬Òò´ËÓÃÒ»Ììʱ¼äʹÓÃWinDbg+Win2000sourcecodeÖØÐ¶¨ÒåÁ˳£ÓõÄÄÚºËÊý¾Ý½á¹¹£¬²¢¾¡¿ÉÄÜ»¹Ô΢ÈíµÄԽṹ¶¨Ò壬ÿ¸ö½á¹¹¶¼µÝ¹éµ½×î×Ó²ãµÄ½á¹¹²¢ÇÒͨ¹ýÁ˲âÊÔ¡£Í¨¹ýÕâ´Î¹¤×÷¹ý³Ì²»½öʹ×Ô¼ºµÃµ½Ò»´ÎѧϰµÄ»ú»á£¬¶øÇÒÌá¸ßÁË×Ô¼ºµÄÕûÌåÈí¼þ¼Ü¹ ......