delphi7的Idtcpserver与Idtcpclient 如何使用。知道的请进?
解决方案 »
- 像QQ一样可以复制粘贴文件(等于发送)的功能怎么实现?
- 帮帮忙
- 如何调试dll,hook到目标进程
- 两个TDataset1和TDataset2它们的字段数据类型都相同,问怎么把这两个TDataset合并到TDataset1中?
- Delphi中怎么读出Image中图片的二进制源码
- Windows Media Player 9 漂亮的软件界面
- 大家好,小弟跪求《楚汉骄雄》下载地址,FTP也行。速度要快的。谢谢。只要能下,立即结贴给分
- 如何连接access库
- 就是“发货单”的有固定格式了,发运的货物数量不确定,所以在固定的格式中,打印不固定的货物,如何实现,
- 怎样即时检测光驱内是否有光盘
- 合并数据问题
- 我想用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.