比如 现在TIDTCPserver1 已经跟某2个客户端连接好了。现在我要在服务器段,添加一个按钮
在按钮里面控制TIDTCPserver1向某一个客户端发信息,客户端IP已知。
如:
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
// 发信息到某一客户端。
end;
在按钮里面控制TIDTCPserver1向某一个客户端发信息,客户端IP已知。
如:
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
// 发信息到某一客户端。
end;
解决方案 »
- delphi数据修改语句中数据类型转换问题??
- 请问如何用Delphi制作3GP播放器?
- 给由x得出y的部分数据分布(递增),但没有计算公式,如何得到全部的x对应于y的值
- 大家帮帮忙,帮我看看这个问题。在线等待!!!!
- fastreport用法?
- 网络电视
- 谁能帮我删除http://expert.csdn.net/Expert/topic/2307/2307426.xml?temp=.4847071上的回复啊
- 如何捕捉TServerSocket或TClientSocket的错误信息。高手请进
- 為什麼我的xxx.1會變成xxx.099?
- FormActivate没反应
- Delphi如何实现类型于工具箱的树形结构
- 什么时候能出一本只介绍IDE的书呢
UDP有IP和端口就可以发送,
TCP的server端必须等客户端连接上来后才能发送
类似AThread.Connection.WriteLn具体建议先看看INDY的demo,里面有个chat的例子
能写出这句,证明你再看demo,为什么不仔细研究下呢?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls,
IdThreadMgr, IdThreadMgrDefault;type
Tmain = class(TForm)
s1: TIdTCPServer;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
IdThreadMgrDefault1: TIdThreadMgrDefault;
procedure Button1Click(Sender: TObject);
procedure s1Connect(AThread: TIdPeerThread);
procedure s1Execute(AThread: TIdPeerThread);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
Clients:TList;
{ Public declarations }
end;var
main: Tmain;implementation{$R *.dfm}procedure Tmain.Button1Click(Sender: TObject);
begin
s1.Active:=true;
end;procedure Tmain.s1Connect(AThread: TIdPeerThread);
begin
Clients.Add(AThread);
memo1.Lines.Add(AThread.Connection.LocalName);end;procedure Tmain.s1Execute(AThread: TIdPeerThread);
var buf:array[0..99]of char;
begin
Athread.Connection.ReadBuffer(buf,100);
memo1.Lines.Add(buf);
Athread.Connection.WriteBuffer(buf,100,true);
end;procedure Tmain.Button2Click(Sender: TObject); //发不了!!!!
var buf:array[0..99]of char;
begin
fillchar(buf,100,'c');
TIdPeerThread(Clients.Items[0]).Connection.WriteBuffer(buf,100,true);
end;end.
客户端:
unit Umain;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient;type
Tmain = class(TForm)
c1: TIdTCPClient;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Button3: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type a=class(tthread)
procedure execute;override;
end;var
main: Tmain;
b:a;
implementation{$R *.dfm}
procedure a.execute;
var buf:array[0..99]of char;
begin
while true do
begin
if main.c1.Connected then
begin
sleep(10);
main.c1.ReadBuffer (buf, 100);
main.memo1.Lines.Add(buf);
end;
end;
end;procedure Tmain.Button1Click(Sender: TObject);
begin
c1.Connect(1000);
b:=a.create(false);
end;procedure Tmain.Button2Click(Sender: TObject);
var buf:array[0..99]of char;
begin
fillchar(buf,100,'a');
c1.WriteBuffer (buf, 100, true);
//c1.Write(edit1.text);end;procedure Tmain.Button3Click(Sender: TObject);
var buf:array[0..99]of char;
begin
c1.ReadBuffer (buf, 100);
memo1.Lines.Add(buf);
end;end.