//服务器端程序 var Form1: TForm1; rootNode:TTreeNode; i:integer; //登陆的计算机的计数器 implementation {$R *.dfm} uses unit2; procedure TForm1.FormCreate(Sender: TObject); begin i:=1; memo1.Lines.Clear; memo1.Enabled:=false; memo2.Lines.Clear; statusbar1.simplepanel:=true; rootnode:=TreeView1.Items.Item[0]; end; procedure TForm1.ListemSBClick(Sender: TObject); begin if not serversocket1.Active then n2click(sender); end; procedure TForm1.N2Click(Sender: TObject); begin Form2.showmodal; end; procedure TForm1.ServerSocket1Accept(Sender: TObject; Socket: TCustomWinSocket); begin //当有客户登陆时,在TTreeView中显示客户计算机 TreeView1.Items.AddChild(rootnode,'Client Socket'+inttostr(i)); i:=i+1; //展开TreeView1 TreeView1.FullExpand; //状态栏上的显示信息 StatusBar1.SimpleText:='一个Client和Server相连!'; end; procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin StatusBar1.SimpleText:='客户正在和Server相连!'; end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var str:string; begin //接受client来的数据 str:='收到信息:'+Socket.ReceiveText; Memo1.Lines.Add(str); //stausbar上的显示 StatusBar1.SimpleText:='接收到client的文本'; end; procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin statusBar1.SimpleText:='一个client断开连接!'; TreeView1.Items.Delete(TreeView1.Items.Item[1]); end; procedure TForm1.ExitSBClick(Sender: TObject); begin if serverSocket1.Active then serverSocket1.Close; close; end; //client端程序 procedure TForm1.Memo2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key=VK_RETURN) and (BConnected=true) then begin //向服务器发送memo2的最后一行数据 clientSocket1.Socket.SendText(Memo1.Lines.Strings[Memo1.Lines.Count-1]); StatusBar1.SimpleText:='正在向服务器发送数据!'; end; end;