请问如何重载TServerSocket的OnGetThread事件? 如题。各位可以给我一个例子吗?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你个例子客户端向服务器端传送文件======================服务器端(stThreadBlocking)===============================unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp;type TForm1 = class(TForm) ServerSocket1: TServerSocket; procedure ServerSocket1GetThread(Sender: TObject; ClientSocket: TServerClientWinSocket; var SocketThread: TServerClientThread); private { Private declarations } public { Public declarations } end; TClientThread = Class(TServerClientThread) private public procedure ClientExecute; override; end; var Form1: TForm1;implementation{$R *.dfm}procedure TClientThread.ClientExecute;var ReceiveBuffer : Array[0..1023] Of Char; SocketStream : TWinSocketStream; BytesRead : Integer; F : TFileStream; FileName: string;begin while not Terminated and ClientSocket.Connected do Begin try SocketStream := TWinSocketStream.Create(ClientSocket, 100); FileName := 'C:\afile'; if FileExists(FileName) then FileName := FileName + '0'; F := TFileStream.Create(FileName, fmCreate); try FillChar(ReceiveBuffer, sizeof(ReceiveBuffer), 0); while SocketStream.WaitForData(5000) do begin BytesRead := SocketStream.Read(ReceiveBuffer,SizeOf(ReceiveBuffer)); if BytesRead = 0 then ClientSocket.Close Else F.WriteBuffer(ReceiveBuffer, BytesRead); end; finally SocketStream.Free; ClientSocket.Close; f.Free; end; except end; end;end;procedure TForm1.ServerSocket1GetThread(Sender: TObject; ClientSocket: TServerClientWinSocket; var SocketThread: TServerClientThread);begin SocketThread := TClientThread.Create(False, ClientSocket);end;end.==================================客户端(ctBlocking)===================================unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp;type TForm1 = class(TForm) ClientSocket1: TClientSocket; OpenDialog1: TOpenDialog; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var s : TWinSocketStream; f, f2: TFileStream;begin if not OpenDialog1.Execute then Exit; ClientSocket1.Open; s := TWinSocketStream.Create(ClientSocket1.Socket, 60000); f := TFileStream.Create(OpenDialog1.FileName, fmShareDenyWrite); try s.CopyFrom(f, 0); finally s.Free; f.Free; ClientSocket1.Close; end;end;end.================================================================== 如何发消息关机或重启? PaintTo问题,50分求解答 求教 教学跟踪考勤系统 求教有关QuickReport的问题 讨论网络游戏封外挂的手段和实现思路(灌水的不要进). 招兼职软件工程师(饮食行业)2名 在2000下做了一个小程序在xp下怎么不一样了???? 要二个算法的例子 一个有点难度的问题 安装Delphi在什么平台比较好,是98还是2000,另外Delphi与SQL有什么关系, 请问一下有谁知道杭州软件行业的平均工资大概是什么水准? nmudp.pas要在哪里找?
客户端向服务器端传送文件
======================服务器端(stThreadBlocking)===============================
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp;type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
procedure ServerSocket1GetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
private
{ Private declarations }
public
{ Public declarations }
end;
TClientThread = Class(TServerClientThread)
private
public
procedure ClientExecute; override;
end;
var
Form1: TForm1;implementation{$R *.dfm}
procedure TClientThread.ClientExecute;
var
ReceiveBuffer : Array[0..1023] Of Char;
SocketStream : TWinSocketStream;
BytesRead : Integer;
F : TFileStream;
FileName: string;
begin
while not Terminated and ClientSocket.Connected do
Begin
try
SocketStream := TWinSocketStream.Create(ClientSocket, 100);
FileName := 'C:\afile';
if FileExists(FileName) then FileName := FileName + '0';
F := TFileStream.Create(FileName, fmCreate);
try
FillChar(ReceiveBuffer, sizeof(ReceiveBuffer), 0);
while SocketStream.WaitForData(5000) do
begin
BytesRead := SocketStream.Read(ReceiveBuffer,SizeOf(ReceiveBuffer));
if BytesRead = 0 then
ClientSocket.Close
Else
F.WriteBuffer(ReceiveBuffer, BytesRead);
end;
finally
SocketStream.Free;
ClientSocket.Close;
f.Free;
end;
except
end;
end;
end;
procedure TForm1.ServerSocket1GetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
begin
SocketThread := TClientThread.Create(False, ClientSocket);
end;end.==================================客户端(ctBlocking)===================================
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
OpenDialog1: TOpenDialog;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
s : TWinSocketStream;
f, f2: TFileStream;
begin
if not OpenDialog1.Execute then Exit;
ClientSocket1.Open;
s := TWinSocketStream.Create(ClientSocket1.Socket, 60000);
f := TFileStream.Create(OpenDialog1.FileName, fmShareDenyWrite);
try
s.CopyFrom(f, 0);
finally
s.Free;
f.Free;
ClientSocket1.Close;
end;
end;end.
==================================================================