我用TServerSocket写一个SOCKET服务器程序,客户的连接有点像浏览器,连上来取走数据就关闭。我发现有这样一个问题,当我客户端连接接近4000次的时候,服务器没有办法再接收新的连接。调试发现以前的客户端连接socket没有正常释放。在OnClientDisConnect事件处理函数中调用Socket->Close()或者Socket->Free() 或者delete Socket都不可行,报内存错误, WHY??? 有解决办法吗???希望得到各位高手的指点。
解决方案 »
- 如何在quickrep上实现分页
- 一个随机函数的问题??
- 我在Delphi或者BCB做的一个Com准备在Asp中调用,
- 请问各位大侠,如何在DELPHI中实现ACCESS数据库的在线动态升级?
- 关于“好急呀!!这样的变态报表怎么搞定?(在线等待)Help!!”的补充!
- 下列语句,如何转换为sql查询 100分
- 那位有《DELPHI5开发人员指南》 6也可以买限西安地区~!!!
- 请问如何得到memo总的行数?
- 有誰能说出以下查询语句中各引号的引用范围以及作用?(菜鸟有问)
- 帮帮忙啊``本人对DEPHI知之甚少``哪位好心人帮帮我啦``具体如下
- 哪里有关于delphi开源项目的网站!
- DBGrid中有多个字段,其中一个字段值不可改动,其他列值可以改动,如何实现
form1.ServerSocket1.Socket.Connections[int_index].Close;
这个报内存错误,说操作一个非法的socket!
localport值就行啦:例:将端口设为2004,clientsocket1.localport:=2004;
‘只要一用form1.ServerSocket1.Socket.Connections[int_index].Close;
这个报内存错误,说操作一个非法的socket!’这人是不会错的,我的程序里就是这样处理的。可能是int_index 的值取错了,吧,它是整形值;是从0..n的数。
for(int i=0;i<ServerSocket1->Socket->ActiveConnections;i++)
{
if(ServerSocket1->Socket->Connections[i]==Socket)//确定是那一个客户端
{
ServerSocket1->Socket->Connections[i]->Close();
}
}
我想因为这个socket客户端已经关闭,你再关闭所以就报错拉!
http://expert.csdn.net/Expert/topic/2994/2994314.xml?temp=.7303888