社区
网络及通讯开发
帖子详情
Serversocket问题/客户每次连接-断开一次,服务程序占用内存就增加4K,为什么?
Vtang
2006-12-20 04:53:29
客户每次连接-断开一次,服务程序占用内存就增加4K,为什么?
...全文
374
6
打赏
收藏
Serversocket问题/客户每次连接-断开一次,服务程序占用内存就增加4K,为什么?
客户每次连接-断开一次,服务程序占用内存就增加4K,为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sbkopoky
2007-02-17
打赏
举报
回复
有一个香港和悦网络电话的源文件 ,有兴趣妨进入我的BLOG看看
shadowstar
2007-01-20
打赏
举报
回复
检查一下代码吧,这样的问题太笼统.
pp616
2007-01-18
打赏
举报
回复
没发现Serversocket有这个问题。资源使用很稳定。没有每连接一才就增加4K内存的现象。
do2008
2007-01-18
打赏
举报
回复
在BCB的安装目录下$(BCB),VCL中自带的Sockets.pas这个VCL源码文件中,TBaseSocket的Close方法有点问题;
路径: $(BCB)\Source\Internet\sockets.pas
procedure TBaseSocket.Close;
begin
if FActive then
begin
//这里,在有LINUX这个宏里,就会调用close(FSocket),去释放socket的资源
{$IFDEF LINUX}
ErrorCheck(Libc.__close(FSocket));
{$ENDIF}
FSocket := INVALID_SOCKET;
FActive := False;
DoDestroyHandle;
end;
end;
但windows没有,也就是说,TBaseSocket.Close;并没有真正去释放socket的资源
比如,用TcpView等工具,就可以看到服务进程占用的TCP端口,在客户端断开连接后,
还是处于listen状态,并没有释放这个端口
也就是说,有可能是这个原因造成服务程序不断占用4K内存的原因
建议将函数改为如下:
procedure TBaseSocket.Close;
{$IFDEF MSWINDOWS}
var
NonBlock: Integer;
{$ENDIF}
begin
if FActive then
begin
{$IFDEF MSWINDOWS}//添加对windows的处理
ErrorCheck(ioctlsocket(FSocket, FIONBIO, NonBlock));
{$ENDIF}
{$IFDEF LINUX}
ErrorCheck(Libc.__close(FSocket));
{$ENDIF}
FSocket := INVALID_SOCKET;
FActive := False;
DoDestroyHandle;
end;
end;
然后再这个$(BCB)\Source\Internet\sockets.pas文件复制到你的Project源码目录下,添加到你的Project中,再编译即可。
do2008
2007-01-18
打赏
举报
回复
1.单步跟踪服务程序TServerSocket的相关事件处理代码,排除自己代码出现问题的可能
2.开CodeGuard,看服务程序是否申请了某些资源, 却没有正确释放
wcpjavastudy
2007-01-10
打赏
举报
回复
邀请c/c++学习的各路好友加入c/c++学习群:17185131
leetcode 260.Single Number III
在leetcode的第260题 Single Number III 中有位大神的解题方法。
[leetcode]260. Single Number III
[leetcode]260. Single Number III Analysis 心态奶茶妹妹~—— [马云爸爸恐成最大赢家 哈哈哈] Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly ...
leetcode【260】Single Number III
写在最前面: 当然可以通过遍历查找,但是时间复杂度太高,leetcode肯定通不过。 然后我们要研究异或。 leetcode【260】Single Number III Given an array of numbers nums, in which exactly two elements appear only once and all the other elements a...
LeetCode: 260. Single Number III
LeetCode: 260. Single Number III 题目描述 Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear ...
LeetCode 260. Single Number III解题报告(python)
260. Single Number III Lowest Common Ancestor of Deepest Leaves python solution 题目描述 Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear ...
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章