请问,哪有使用D7的TCPSERVER,TCPCLIENT开发通讯程序的资料或范例? 请问,哪有使用D7的TCPSERVER,TCPCLIENT开发通讯程序的资料或范例?问题2:如何使用D7的TCPSERVER,TCPCLIENT传递文件,请给出具体实现方法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Delphi7自带的DEMO里有一个NetChat 用D7的TCPSERVER,TCPCLIENT传递文件的例子:unit mainform;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Sockets, ComCtrls;type TForm1 = class(TForm) TcpClient1: TTcpClient; TcpServer1: TTcpServer; btnchg: TButton; Edit1: TEdit; edtRemoteHost: TEdit; edtRemotePort: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; btnsel: TButton; btnsnd: TButton; OpenDialog1: TOpenDialog; ProgressBar1: TProgressBar; SaveDialog1: TSaveDialog; procedure btnchgClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnselClick(Sender: TObject); procedure btnsndClick(Sender: TObject); procedure TcpServer1Accept(Sender: TObject; ClientSocket: TCustomIpClient); private { Private declarations } sndfilename : string; public { Public declarations } end;TClientDataThread = class(TThread) buf : array of byte; fname : string; flength : integer; constructor Create(CreateSuspended: Boolean); procedure Execute; override; procedure acceptfile; procedure Terminate; end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btnchgClick(Sender: TObject);begin tcpserver1.LocalPort:=edit1.Text; //tcpserver1.Listening:=true; 错误: listening 是只读属性 tcpserver1.Active:=true;end;procedure TForm1.FormCreate(Sender: TObject);begin sndfilename:=''; form1.btnchg.Click;end;procedure TForm1.btnselClick(Sender: TObject);begin if opendialog1.Execute then sndfilename:=opendialog1.FileName;end;procedure TForm1.btnsndClick(Sender: TObject);var sfile : Tfilestream; filebuf : array of byte; filelength : integer;begin TcpClient1.RemoteHost := edtRemoteHost.Text; TcpClient1.RemotePort := edtRemotePort.Text; try if TcpClient1.Connect then begin sfile := tfilestream.Create(sndfilename,fmOpenRead); filelength:=sfile.Size ; setlength(filebuf,filelength+sizeof(integer)); copymemory(filebuf,@filelength,sizeof(integer)); sfile.Read(filebuf[sizeof(integer)],filelength); sfile.Free; tcpclient1.SendBuf(filebuf[0],filelength+sizeof(integer)); end; finally TcpClient1.Disconnect; end;end;{ TClientDataThread }procedure TClientDataThread.acceptfile;var fstream : Tfilestream;begin fstream:=tfilestream.Create(fname,fmcreate); fstream.Write(buf[0],flength); end;constructor TClientDataThread.Create(CreateSuspended: Boolean);begin inherited Create(CreateSuspended); FreeOnTerminate := true;end;procedure TClientDataThread.Execute;begin Synchronize(acceptfile);end;procedure TForm1.TcpServer1Accept(Sender: TObject; ClientSocket: TCustomIpClient);var flen ,rlen,position : integer; recthread : TClientDataThread;begin if savedialog1.Execute then begin position:=0; clientsocket.ReceiveBuf(flen,sizeof(integer)); recthread:=TClientDataThread.Create(true); recthread.fname:=savedialog1.FileName; recthread.flength:=flen; setlength(recthread.buf,flen); rlen:=ClientSocket.ReceiveBuf(recthread.buf[position],flen); position:=rlen+position; while rlen<flen do begin flen:=flen-rlen; rlen:=clientsocket.ReceiveBuf(recthread.buf[position],flen); position:=rlen+position; end; recthread.Resume; end;end;procedure TClientDataThread.Terminate;begin inherited;end;end. 怎么使用ttcpserver和ttcpclient 传输双重结构体数据? 在一个程序中,同时放a,b两音乐,能随意控制其中一首音乐的音量大小,而不影响其他音乐。 两个打印机同时打印 得到字符串 那位大哥知道2004年下半年软件工程师资格考试教材那里有? 全局变量问题 请问如何在程序中实现手写笔的压感功能? 如何实现在quickreport中将A4纸竖向打印改为横向打印。 关于注册表的问题,快急死了. clx是什么东西??? 推荐一个申请免费域名的网址和方法 急急急.....把一个已有程序放到我自己程序的指定位置上。去掉标题栏
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Sockets, ComCtrls;type
TForm1 = class(TForm)
TcpClient1: TTcpClient;
TcpServer1: TTcpServer;
btnchg: TButton;
Edit1: TEdit;
edtRemoteHost: TEdit;
edtRemotePort: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
btnsel: TButton;
btnsnd: TButton;
OpenDialog1: TOpenDialog;
ProgressBar1: TProgressBar;
SaveDialog1: TSaveDialog;
procedure btnchgClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnselClick(Sender: TObject);
procedure btnsndClick(Sender: TObject);
procedure TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
private
{ Private declarations }
sndfilename : string;
public
{ Public declarations }
end;TClientDataThread = class(TThread)
buf : array of byte;
fname : string;
flength : integer;
constructor Create(CreateSuspended: Boolean);
procedure Execute; override;
procedure acceptfile;
procedure Terminate;
end;
var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btnchgClick(Sender: TObject);
begin
tcpserver1.LocalPort:=edit1.Text;
//tcpserver1.Listening:=true; 错误: listening 是只读属性
tcpserver1.Active:=true;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
sndfilename:='';
form1.btnchg.Click;
end;procedure TForm1.btnselClick(Sender: TObject);
begin
if opendialog1.Execute then
sndfilename:=opendialog1.FileName;
end;procedure TForm1.btnsndClick(Sender: TObject);
var
sfile : Tfilestream;
filebuf : array of byte;
filelength : integer;
begin
TcpClient1.RemoteHost := edtRemoteHost.Text;
TcpClient1.RemotePort := edtRemotePort.Text;
try
if TcpClient1.Connect then
begin
sfile := tfilestream.Create(sndfilename,fmOpenRead);
filelength:=sfile.Size ;
setlength(filebuf,filelength+sizeof(integer));
copymemory(filebuf,@filelength,sizeof(integer));
sfile.Read(filebuf[sizeof(integer)],filelength);
sfile.Free;
tcpclient1.SendBuf(filebuf[0],filelength+sizeof(integer)); end;
finally
TcpClient1.Disconnect; end;
end;{ TClientDataThread }procedure TClientDataThread.acceptfile;
var
fstream : Tfilestream;
begin
fstream:=tfilestream.Create(fname,fmcreate);
fstream.Write(buf[0],flength);
end;constructor TClientDataThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
FreeOnTerminate := true;
end;procedure TClientDataThread.Execute;
begin
Synchronize(acceptfile);
end;procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
flen ,rlen,position : integer;
recthread : TClientDataThread;
begin
if savedialog1.Execute then
begin
position:=0;
clientsocket.ReceiveBuf(flen,sizeof(integer));
recthread:=TClientDataThread.Create(true);
recthread.fname:=savedialog1.FileName;
recthread.flength:=flen;
setlength(recthread.buf,flen);
rlen:=ClientSocket.ReceiveBuf(recthread.buf[position],flen);
position:=rlen+position;
while rlen<flen do
begin
flen:=flen-rlen;
rlen:=clientsocket.ReceiveBuf(recthread.buf[position],flen);
position:=rlen+position;
end;
recthread.Resume;
end;
end;procedure TClientDataThread.Terminate;
begin
inherited;
end;end.