关于socket连接的问题~(100分)

  • 主题发起人 主题发起人 delphilxh
  • 开始时间 开始时间
D

delphilxh

Unregistered / Unconfirmed
GUEST, unregistred user!
我编了个程序,使用了ics的TWSocket控件,作为服务器端,客户端也是用这个控件,但是现在有
个问题,在单机上实验没有问题,但当在服务器上运行时,时间长了,客户端就连不上服务器端了
,是什么原因造成的?
下面是服务器端的部分源码
procedure TFormmain.SrvSocketSessionAvailable(Sender: TObject; Error: Word);
var
NewClient : TWSocket;
begin
NewClient := TWSocket.Create(nil);
FClients.Add(NewClient);
NewClient.LineMode := TRUE;
NewClient.OnDataAvailable := CliSocketDataAvailable;
NewClient.LineEnd := #13#10;
NewClient.OnSessionClosed := ClientSessionClosed;
NewClient.HSocket := SrvSocket.Accept;
NewClient.LingerOnOff := wsLingerOn;
NewClient.SetLingerOption;
// Memo1.Lines.Add('建立一个连接');
end;
procedure TFormmain.ClientSessionClosed(Sender: TObject; Error: Word);
var
Cli : TWSocket;
Itm : Integer;
begin
Cli := Sender as TWSocket;
Itm := FClients.IndexOf(Cli);
if Itm >= 0 then
FClients.Delete(Itm);
PostMessage(Handle, WM_DESTROY_SOCKET, 0, LongInt(Cli));

end;
procedure TFormmain.WMDestroySocket(var msg: TMessage);
begin
TWSocket(msg.LParam).Destroy;
end;
 
客户退出的时候释放资源没有?
估计是有资源泄露!
 
楼上的你也太过分了。。。你不会有什么好下场的~~~~
人渣一个~~~~~
 
孙辉的爸爸,
你丫的欠揍啊~,
水平不行,不要乱说话。

有本事你也写些东西出来,
不要象疯狗一样乱咬人,

你丫的有本一事不要重新注册一个新的ID啊
有种单挑

 
显然是他的客户Accept以后的Socket没有释放,当然就是资源没有释放干净,这很正常,
你控件用多了,脑袋进了水把
 
同意 用indy控件 编程吗 换种思路最好
 
???怎么回事???
 
后退
顶部