Socket 多次 Open,出现错误:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作(10055) on Api 'Connect'。我怎么能在上一

  • 主题发起人 主题发起人 AsStone
  • 开始时间 开始时间
A

AsStone

Unregistered / Unconfirmed
GUEST, unregistred user!
Socket 多次 Open,出现错误:由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作(10055) on Api 'Connect'。我怎么能在上一次 Open 失败后,清除占用的内存?(100分)<br />在一个 C/S 系统中,客户端连接服务器时,如果服务器未启动,客户端会每隔几秒主动
去连接服务器(ClientSocket.Open),这样,如果服务器一直未启动,就会发生以上的
问题。
请问如何清除上一次 Open 失败,操作占用的内存?或清空系统缓冲区呢?
多谢赐教!
 
你可以在每次open之前,先调用 close啊
 
如果是 Open 成功,再 Close 是没问题呀!
但是服务器未启动,ClientSocket.Open 不成功,用 Close 是没用的。
 
关注,我也遇到了这个问题。。。
 
在OnError里面socket.close;
在open前 closesocket(ClientSocket1.socket.sockethandle)即可
 
在 Delphi 中,在失败后调用以下两种方法中的一种即可:(测试通过)
1。ClientSocket.socket.close;
2。ClientSocket.Socket.Disconnect(ClientSocket.Socket.SocketHandle);
 
谢谢大家!Alter,Jondona 的方法可以!
 
后退
顶部