socket通讯问题(100分)

  • 主题发起人 主题发起人 hellenlong
  • 开始时间 开始时间
H

hellenlong

Unregistered / Unconfirmed
GUEST, unregistred user!
我开了一个线程,判定是否需要进行通讯,如果需要通讯,进行socket通讯,
F_Zdcj.Cs_1.Host := Yczj;
F_Zdcj.Cs_1.Port := 2000;
F_Zdcj.Cs_1.Open;
并结束线程
但是,线程结束了后,这个socket也没有用了
我一定要用现成来做,有没其他方法
 
一个利用WinSocket控件传送文件的Demo
http://www.aidelphi.com/6to23/docu/transfile.zip
你试试看??
 
在线程里创建并使用Socket啊,以IdUdpClient为例:

TSendThread=class(TThread)
public
constructor Create(CreateSuspend:boolean);
protected
procedure Execute;override;
private
iduSend:TIdUdpClient;
end;

{ TSendThread }

constructor TSendThread.Create(CreateSuspend: boolean);
begin
inherited;
FreeOnTerminate:=true;
iduSend:=TIdUdpClient.Create(nil);
end;

procedure TSendThread.Execute;
begin
inherited;
while not Terminated do begin
  // Socket通讯
end;
iduSend.Free;
end;
 
把你創建Socket的語句寫成一個單獨的過程(不能帶參數)﹐然后在線程里用Synchronize(過程名)來調用就行了。Synchronize是將一個過程調入主線程執行的一個方法。
 
后来我用自定义消息来处理的,谢谢各位
 
多人接受答案了。
 
后退
顶部