delphi7的Idtcpserver与Idtcpclient 如何使用。知道的请进?
解决方案 »
- 如何通过internet访问局域网内的ms sql server 数据库(delphi)?
- 请问:软件运行前的设置界面显示'第一次运行软件,正在设置...'等信息的东东叫什么?如何做出这种东东呢?
- 怎么禁止在WIN下修改时间??
- FTP的一个异常?
- Delphi怎样注释一段文字? VC中用/**/
- 如何实现在DBGrid(连接Table1的)中某一列的编辑区连接另外一表Table2的'Name'字段,点击下拉菜单就可实现?
- I/O error 183是什么错误?在运行reset(f)时报这个错误!
- 为什么TImageList不支持256色的图?
- Redhat Linux7.1下如何装Kylix 1.0 ?
- d7转EXCEL office2007以上版本问题
- 合并数据问题
- 我想用Delphi编写一个数据库转换程序?把VF数据库的dbf表转成Oracle数据库的表?不知道改如何下手?
以下是我从网上找的一个,然后自己改了改。
unit MainFrm;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdCustomTCPServer, IdTCPServer, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, ComCtrls, StdCtrls, ExtCtrls, IdContext;type
TfrmMain = class(TForm)
tcpClient: TIdTCPClient;
tcpServer: TIdTCPServer;
statusBar: TStatusBar;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
serverip: TLabeledEdit;
serverport: TLabeledEdit;
serverstop: TButton;
clientcon: TButton;
clientdiscon: TButton;
memo: TMemo;
msg: TEdit;
sendbt: TButton;
serverstart: TButton;
procedure tcpServerExecute(AContext: TIdContext);
procedure tcpServerConnect(AContext: TIdContext);
procedure serverstopClick(Sender: TObject);
procedure serverstartClick(Sender: TObject);
procedure sendbtClick(Sender: TObject);
procedure msgKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure clientdisconClick(Sender: TObject);
procedure clientconClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmMain: TfrmMain;implementation{$R *.dfm}procedure TfrmMain.clientconClick(Sender: TObject);
begin //客户端点了连接按钮
if serverip.Text = '' then
begin
MessageDlg('请输入服务器IP',mtError,[mbok],0);
serverip.SetFocus;
end;
if serverport.Text = '' then
begin
MessageDlg('请输入服务器端口号',mtError,[mbok],0);
serverport.SetFocus;
end;
tcpclient.Host := serverip.Text;
tcpClient.Port := StrtoInt(serverport.Text);
try
tcpclient.Connect;
statusBar.SimpleText := '已连接' + serverip.Text;
memo.Lines.Add('已连接' + serverip.Text)
except
statusBar.SimpleText := '服务器连接不上';
end;
end;procedure TfrmMain.clientdisconClick(Sender: TObject);
begin //客户端点了断开
tcpclient.Disconnect();
memo.Lines.Add('客户端已断开');
statusbar.SimpleText := '客户端已断开';
end;procedure TfrmMain.FormCreate(Sender: TObject);
begin
//自动启动服务器
try
tcpserver.Active := true;
statusbar.SimpleText := '服务器已启动';
except
statusbar.SimpleText := '本软件使用的端口被占用';
end;
end;procedure TfrmMain.msgKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
sendbt.Click;
end;
end;procedure TfrmMain.sendbtClick(Sender: TObject);
begin
//发送信息
if msg.Text = '' then
begin
MessageDlg('请输入要发送的信息',mtError,[mbOk],0);
msg.SetFocus;
end
else
begin
tcpClient.Socket.WriteLn(msg.Text);
//tcpClient.SendCmd(msg.Text);
//tcpclient.WriteLn(msg.Text);
end;
end;procedure TfrmMain.serverstartClick(Sender: TObject);
begin
//服务器端启动
if not tcpServer.Active then
begin
tcpServer.Active := true;
statusBar.SimpleText := '服务器端已启动';
end;
end;procedure TfrmMain.serverstopClick(Sender: TObject);
begin
//服务器端停止
if tcpServer.Active then
begin
tcpServer.Active := false;
statusBar.SimpleText := '服务器端已停止';
end;
end;procedure TfrmMain.tcpServerConnect(AContext: TIdContext);
begin
memo.Lines.Add('接收来自'+AContext.Connection.Socket.Binding.PeerIP+'的连接');
end;procedure TfrmMain.tcpServerExecute(AContext: TIdContext);
var
readstr: string;
begin
readstr := AContext.Connection.Socket.ReadLn();
memo.Lines.Add(readstr);
end;end.