关于delphi下clientsocket的重复连接问题
2015-12-09 09:27
417 查看
这几天用clientsocket进行数据传输时发现考虑到网络或服务非正常端断掉时候,客户端需要进行重新连接。但重新连接后法相socket句柄不能释放,在windows
管理器里可以看到,如果不断重新连接,几天之后程序就会崩溃。通过对delphi下源代码追踪发现当调用clientsocket的open时,程序调用API socket函数生成一个套接字,主动关闭时调用closesocket关闭套接字。但是当active是false时不调用内部disconnect函数,此函数调用closesocket释放资源,所以只能在程序中自己调用closesocket,代码如下:
if not clientSocket1.active then
begin
closesocket(clientsocket1.socket.sockethandle);
clientsocket1.open;
end;
管理器里可以看到,如果不断重新连接,几天之后程序就会崩溃。通过对delphi下源代码追踪发现当调用clientsocket的open时,程序调用API socket函数生成一个套接字,主动关闭时调用closesocket关闭套接字。但是当active是false时不调用内部disconnect函数,此函数调用closesocket释放资源,所以只能在程序中自己调用closesocket,代码如下:
if not clientSocket1.active then
begin
closesocket(clientsocket1.socket.sockethandle);
clientsocket1.open;
end;
相关文章推荐
- Delphi iOS Gesture 事件触发的探索
- Delphi 3种获取网页源代码实例。
- delphi7 下的Excel导出
- Delphi异常处理机制
- Delphi 快速检测是否联网
- 用C#实现Delphi的TStringList类
- delphi 手电筒
- Delphi 函数指针(三大好处:灵活,委托的本质,回调机制),还可把函数指针当参数传入
- Delphi获取本机的MAC地址
- delphi读取和写入文件-richedit控件
- Delphi下POS机
- Android问题-DelphiXE8安装后编译Android提示SDK无法更新问题(XE10也可以解决)
- 自写的LastPos,寻找字符串里的最后一个字符,RTL里没有提供这个函数——Delphi的String下标是从1开始的
- 怎样在DELPHI中使用API函数
- 怎样在DELPHI中使用API函数
- Delphi字段类型和不同数据库对应.txt
- Delphi与SQL模糊like通配符查询(转载)
- Delphi通过IE窗口句柄获取网页接口(IWebBrowser2) good
- Delphi中的Rtti函数
- 强大的DELPHI RTTI–兼谈需要了解多种开发语言