當Client離線時,Server的listview如何重新更新線上人員呢? |
尚未結案
|
yuliang
一般會員 發表:1 回覆:1 積分:0 註冊:2004-09-23 發送簡訊給我 |
請問一下各位,當我client如果登入時,client的ip會記錄在我listview裡,但如何client離線時,如何使listview重新更新線上人員或刪除listview離線人員
這是我的程式碼,請各位指教一下
Client的
unit U_TCPClient_OnlineUser; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, StdCtrls; type TForm1 = class(TForm) Button1: TButton; IdTCPClient1: TIdTCPClient; Edit1: TEdit; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin IdTCPClient1.Connect; IdTCPClient1.WriteLn(Edit1.Text); end; end.server的 unit U_TCPServer_OnLineUser; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPServer, ComCtrls, StdCtrls; type TOnLineUser = class(TForm) LV1: TListView; IdTCPServer1: TIdTCPServer; Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Button1: TButton; procedure FormActivate(Sender: TObject); procedure IdTCPServer1Execute(AThread: TIdPeerThread); procedure LV1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); procedure IdTCPServer1Disconnect(AThread: TIdPeerThread); private { Private declarations } public { Public declarations } end; var OnLineUser: TOnLineUser; implementation {$R *.dfm} procedure TOnLineUser.FormActivate(Sender: TObject); begin IdTCPServer1.Active := True; end; procedure TOnLineUser.IdTCPServer1Execute(AThread: TIdPeerThread); var AddListItem : TListItem; begin AddListItem := LV1.Items.Add; AddListItem.Caption := AThread.Connection.ReadLn(); AddListItem.SubItems.Add(AThread.Connection.Socket.Binding.PeerIP); AddListItem.SubItems.Add(FormatDatetime('yyyy/mm/dd--hh:nn', Now)); end; procedure TOnLineUser.LV1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); begin Edit1.Text := LV1.Selected.SubItems.GetText; end; procedure TOnLineUser.IdTCPServer1Disconnect(AThread: TIdPeerThread); begin end; end. |
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
yuliang您好,我以前有做過類似的程式,可以給您參考看看,這是一個很簡單的範例
不過是使用TCPSERVER/TCPCLIENT,您可能需要修改一下,或是看看其中的原理
程式連結:http://delphi.ktop.com.tw/loadfile.php?TOPICID=18944964&CC=423696
我的方法是使用一個結構來儲存CLEINT端的資訊,
當有CLIENT連入,或離開時,動態的增刪該結構裡的資料,
然後在呼叫GetOnlineList這個FUNCTION去更新LISTBOX裡的IP及名單
對於聊天,登入,離線的封包處理都做的很有擴充性,您可以好好研究一下
> <>
<>
<>
< >>
>
<>
< class="code"> =程式是一種藝術 也是訓練自己的分析規劃=
=是段落分明 或是雜亂無章=
=是一言以敝 或是廢話連篇=
=是一目了然 或是艱深難懂=
體會這份藝術 您會了解另一份喜悅與成就
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |