Windows socket error:应用程序没有调用WSAStartup,或者WSAStartup失败,(10093),on API 'closesock

  • 主题发起人 主题发起人 猎手1号
  • 开始时间 开始时间

猎手1号

Unregistered / Unconfirmed
GUEST, unregistred user!
Windows socket error:应用程序没有调用WSAStartup,或者WSAStartup失败,(10093),on API 'closesocket' (200分)<br />这种错误是什么原因?
我把ClientSocket放在一个Dll中,写了一个函数用其发送消息,在主程序中调用时,其他
情况下都没问题,只是后来在主程序的onClose事件中添加了一句用该dll的函数发送消息的
语句,退出后就会出现上述错误消息,但消息已被正确发出,并且在onclose中设置断点并
用F8逐条执行时,也不会出错。
 
是脱离IDE每次必错吗?
 
什么叫脱离IDE?
执行exe一样出错。
 
没有释放
 
怎么个释放法?
 
在OnClose中调用dll的函数后要延时一段时间,再关闭整个进程才对!
 
我早就试过用Sleep(10000)了,都延时10秒了还是出一样的错。
难道有别的延时方法可以解决?跟延时可能有关,因为用F8单步调试时,按得慢时不会出
错,按得快了照样出错。
我试过如果用showmessage('')之类的让用户点击一下对话框,就不会出错了,当然可以用
类似的方法让用户确定一下是否退出,但我不想这么做,因为在与用户对话之前,我得先向
服务器发消息,发的是退出的消息,而如果用户选择不退出的话,我又得向服务器再发一
条登录的消息。
 
发送消息的代码?
 
是发送消息的代码。
 
sock的动态连接库版本问题
 
哪个动态链接库?要什么版本的才不会出问题?
 
换Indy吧 of Delphi7
 
uses winsock;
FormOnDestry();
begin
WSACleanup;//释放!
end;
给分!给分!
单步跟踪时候Delphi捕获了变量释放了,直接执行时候关闭没释放内存。
 
to 北京男人:
没用,还是一样的错误,请注意我是在Dll里调用Clisocket的,主程序调用的是Dll的函数。
原先我就已经在onClose里加过WSACleanUp了。
 
哪请问,Windows socket error:10053又是一个什么样的错误类型呢?
 
调用之后执行这个试一试
TickCount :Integer;

TickCount :=GetTickCount;
while GetTickCount-TickCount < 300 do
Application.ProcessMessages;
 
多谢仙剑奇侠!
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
872
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部