線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1367
推到 Plurk!
推到 Facebook!

該怎麼切斷某Clinet的連線?

答題得分者是:hagar
phototin
初階會員


發表:13
回覆:30
積分:29
註冊:2002-06-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-09-25 01:15:04 IP:61.216.xxx.xxx 未訂閱
我使用TServerSocket和TClientSocket元件, 想要在Clinet連到Server時,要求輸入密碼, 要是密碼錯誤,則切斷此Clinet的連線。 請問要在TServerSocket的哪個事件中,核對密碼才好呢? 該怎麼切斷某Clinet的連線?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-09-25 08:36:53 IP:211.22.xxx.xxx 未訂閱
以下是小弟試的, 您參考看看, 有錯的也給小弟指正。
ServerSocket 部份:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
var iEndTick: DWord;
begin
  Socket.SendText('Password: '); // 通知 ClientSocket 要輸入 password
  Application.ProcessMessages;
  iEndTick := GetTickCount   6000; // 等 6 秒
  repeat
    if Socket.ReceiveText = 'hagar' then begin
      // 若 ClientSocket 送來的 password 為 hagar 則為正確
      showmessage('password ok');
      Exit;                       
    end;
  until GetTickCount >= iEndTick;
  Socket.Close; // 若 6 秒後沒得到正確字串, 則中斷與 ClientSocket 連線
end;
ClientSocket 部份:
procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  ShowMessage('connect');
end;
  
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var sGet: string;
begin
  sGet := Socket.ReceiveText;
  if sGet = 'Password: ' then begin // 收到要輸入 Password 的字串
    showmessage('input password');
    Socket.SendText('hagar'); // 這一行測試正確的 password
    // Socket.SendText('hagar1'); // 這一行測試錯的 password
    Application.ProcessMessages;
  end;
end;
  
procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  ShowMessage('disconnect');
end;
-- Everything I say is a lie. 發表人 - hagar 於 2002/09/25 08:37:41
系統時間:2024-03-29 5:39:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!