大吐血,如能解决问题,再送200分!!!(100分)

  • 主题发起人 主题发起人 风之彼端
  • 开始时间 开始时间

风之彼端

Unregistered / Unconfirmed
GUEST, unregistred user!
我写一个程序,用clientsocket,serversocket
如果clientsocket连接不上serversocket则每隔10秒重连一次
这样运行700秒左右,就弹出错误窗体"windows socket error :(10055) on API
'connect'."
我加了errorcode:=0也没用
查了msdn说是缓冲区空间不足
搜索原来类似的贴子发现最终都是不了了之
希望高手帮忙!
 
我也帮不了你,我不会呀!
 
socClient.Socket.Close;
socClient.Active := False;
socClient.Host := '';
socClient.Address := IP;
socClient.Port := Port;
socClient.Open;
 
等待时间在长一点。
 
问题依然存在
 
我这里每隔一秒重试一次,20分钟没有任何问题,主要代码如下:
(Address和Port都已正确设置,随时可以连上Server)

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if ClientSocket1.Active then
exit;
try
ClientSocket1.Open;
except
Memo1.Lines.Add('Open failed. '+TimeToStr(Now));
end;
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
Memo1.Lines.Add('Socket Error: '+IntToStr(ErrorCode)+' '+TimeToStr(Now));
ErrorCode:=0;
end;

procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
Memo1.Lines.Add('Application Error: '+E.Message+TimeToStr(Now));
end;

结果都是
Socket Error: 10061 15:52:42
Socket Error: 10061 15:52:43
...
Socket Error: 10061 16:12:41
 
to creation-zy,
你的操作系统是不是win2000,我的在win2000下也没有问题
但是在98就不行
 
你用winsock API写可能就没有这个毛病
 
to 张无忌:
用socket api是不是很麻烦?
不论用什么办法,只要能解决问题就行
很急呀
 
你可以修改ScktComp单元,把错误对话框去掉,再把UNIT改个名字不就OK了[:D]
 
我在查看如何做手脚,去掉这个毛病!
 
我找到那段代码了,一会就搞定!
 
你查找这段代码:ScktComp.pas在source/vcl目录下,

function CheckSocketResult(ResultCode: Integer; const Op: string): Integer;
begin
if ResultCode <> 0 then
begin
Result := WSAGetLastError;
if Result <> WSAEWOULDBLOCK then
if Assigned(SocketErrorProc) then
SocketErrorProc(Result)
else raise ESocketError.CreateResFmt(@sWindowsSocketError,
[SysErrorMessage(Result), Result, Op]);
end else Result := 0;
end;
 
老大,缓冲区满了,就发不出去了,我还要继续sendstring呀
 
我想你修改这段代码就可以了,想个办法,
至于你用的sendString那是调用recv,
 
总感觉不大踏实,服务器端每天要执行将近20个小时
不过,你说说怎么改吧,我试试
 
我也在想怎么修改过来,就是把DELPHI的处理错误机制修改过来。
 
To: 风之彼端

同病相怜啊,~.~
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1100777
http://www.csdn.net/Expert/TopicView1.asp?id=721979

你这个是采用阻塞方式还是非阻塞方式?
 
非阻塞
:(
给borland写信吧
:)
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
970
import
I
I
回复
0
查看
665
import
I
后退
顶部