1.IdTcpServerä¸æConnectedåDisConnectedäºä»¶,æäºè¿è¡ç®¡ç,èä¸å½Clientéæ£å¸¸å
³éä¹å¯ä»¥ç¨.
2.é»å¡æ¹å¼çéä¿¡æ¹å¼è½ç¶"笨"ç¹,ä½å½ä¸ä¸ª"笨"åæ³ææ,é£å®å°±ä¸æ¯ä¸ä¸ªç¬¨åæ³.
3.ç±äºæ¯Tcpæ¹å¼çè¿æ¥,å¯é æ§é«äºå¾å¤,èä¸ä½¿å¾å
ç½è¿æ¥ä¹å¯é äºè®¸å¤.
ä¸.å
³äºç»ä»¶çä¸è¬æ éå¤çååºç¨
è½ç¶IdTcpClient没æExecuteäºä»¶,ä½å¯ä»¥ç¨çº¿ç¨çåæ³è§£å³,è¿ä¸ªç½ä¸å¾å¤
TClientHandleThread = class(TThread)
private
servercmd:integer;
procedure HandleInput;
protected
procedure Execute; override;
end;
åå¨ä¸»çªå£å®ä¹ä¸å
¨å±åé
ClientHandleThread: TClientHandleThread;
两个è¿ç¨:
procedure TClientHandleThread.Execute;
begin
while not Terminated do
begin
if not fmclient.cTcpC.Connected then
Terminate
else
try
servercmd:=fmclient.cTcpC.Socket.ReadInteger;
Synchronize(HandleInput);
except
end;
end;
end;
procedure TClientHandleThread.HandleInput;
begin
case servercmd of
....
else
end;
end;
å¨Clientè¿æ¥æ¶å建线ç¨
if ClientHandleThread<>nil then ClientHandleThread.Terminate;
try
ctcpc.Connect;
if ctcpc.Connected then begin
ClientHandleThread := TClientHandleThread.Create(True);
ClientHandleThread.FreeOnTerminate:=True;
ClientHandleThread.Resume;
end;
except
ctcpc.Disconnect;
end;
å¨ClientçDisConnectedäºä»¶ä¸éæ¾çº¿ç¨
ClientHandleThread.Terminate;
IdTcpServerå¨è¿æClientè¿æ¥æ¶è¦æå¼å¯ä¸æ¯ä»¶å®¹æäº,ç½ä¸å¯¹å®ä¹ä½äºäºè®¨è®º,ä½æ²¡ä»ä¹ç»æ,å¨æ¬äººç使ç¨è¿ç¨ä¸,å¯ä»¥ç¨ä»¥ä¸æ¹æ³è§£å³
1.å½ç¶æ¯éæ¾ææConnection
ä¸è¬å¨Serverä¸é½ä¼ç¨ä¸ä¸ªListViewæ¥ç»è®°ç»å½è¿æ¥çClient,ææ¯è¿æ ·æ¥éæ¾ç
i:=clist.Items.Count-1;
while i>=0 do begin
TIdContext(clist.Items[i].Data).Connection.Disconnect;
dec(i);
end;
try
ctcps.Contexts.UnlockList;
ctcps.Active:=false;
except
end;
2.åç»æ éå¤ç
è¿æ ·è¿æ²¡æå®,å 为ä¸å®ä¼å¨DisConnectedäºä»¶ä¸æè¥å¹²ä»£ç ,èå
³éä¸æåç主è¦åå æçæµä¸æ¯æ¥èªäºIdTcpServeræ¬èº«,èæ¯è¿äºåç»ä»£ç å¼èµ·ç.æ以è¿æ¥å¾æå¿
è¦.
ä¾å¦ï¼
å¨FormçCloseäºä»¶ä¸è®©IdTcpServer.Tag=-1
å¨DisConnectedä¸
If IdTcpServer.Tag<0 then exit;
1.Client对Serverçæ°æ®ä¼ è¾
è¿ä¸ªç®åçå¾,åºæ¬ä¸å¯ä»¥ç¨ä¸é®ä¸ççæ¹å¼æ¥ä½æ¯æ¹(é»å¡æ¹å¼çä¼ç¹å).
Clientç¨Socketæ¥åè¯,å®çWriteæ¹æ³å¾æææ,å¯ä»¥Writeå¤ç§ç±»åçæ°æ®,å½ç¶,é½æ¯å®é¿æå¯ä»¥å¤æåºé¿åº¦çç±»å,èæå¡å¨çExecuteäºä»¶å°±è½ç¨AContext.Connection.IOHandlerçåç§Readæ¹æ³æ¥è¯»åºç¸åºçå
容.
ç±äºæ¯é»å¡ç¶æ,æ以ææçæä½é½å¯ä»¥å¨ä¸æ¬¡ServerçExecuteäºä»¶ä¸å®æ,åªææ¯ä¼ è¾å¤§æ件.èå¨è¿ä¸ªExecuteç对è¯ä¸,ä¸ä¼è§¦åClientççè§çº¿ç¨!è¿ä¸ªå°¤å
¶éè¦.
2.Server对Clientçæ°æ®ä¼ è¾
ä¸å
¶è¯´æ¯æ°æ®ä¼ è¾,äºå®ä¸ä¸å¦è¯´æ¯æä»¤ä¼ è¾.è¿æ¯å¨æå¡å¨ä¸»å¨çæ¹å¼ä¸è¿è¡çä¸æ¬¡æ§æä»¤ä¼ è¾.注æ,ä¸Client对Server交æµä¸å,æå¡å¨çææå
容å¿
é¡»å¨è¿ä¸æ¬¡ä¼ è¾ä¸è¿è¡å®æ¯!ä¹å°±æ¯è¯´,è¿æ¬¡ä¼ è¾å¿
é¡»æ¯ï¼æ令+æ°æ®å¤§å°+æ°æ®å
容ã
温馨提示:答案为网友推荐,仅供参考