SOCKADDR_IN SvrSockAddr;
SOCKET SvrSocket;
int nPort;
int nStatus;
nPort = 5000;

while (1) {
SvrSockAddr.sin_addr.S_un.S_addr=inet_addr("192.168.0.50");
SvrSockAddr.sin_port = htons(nPort);
SvrSockAddr.sin_family = AF_INET;

SvrSocket = socket(AF_INET, SOCK_STREAM, 0);
nStatus = connect(SvrSocket, (LPSOCKADDR)&SvrSockAddr, sizeof(SvrSockAddr));
if (nStatus == SOCKET_ERROR) {
closesocket(SvrSocket);
SvrSocket = 0;
}

Sleep(10);
}

上述代码在connect一直不成功的情况下,内存在任务管理器上显示增加,如何操作,才不会内存增加,请各位大虾指点。

解决方案 »

  1.   

    如果是connect一直不成功,应该不会泄漏内存啊。检查一下是不是connect是成功的
      

  2.   

    1、SrvSocket应该如何释放。2、connect是不成功的。请各位大虾指点。
      

  3.   

    你写的是服务端吗?但为什么要使用connect(这更像是客户端程序)。connect需要与一个已有的socket相连,但是你只是执行这一个程序,没有其他的socket,因此connect不会连接成功。这只是我的初步判断。
      

  4.   

    你的 SrvSocket 在 while 循环中一直在创建网络套接字,肯定会增加内存呐!
      

  5.   

    请教(网际浪子):如果我要一直去连接一服务端,但都是不成功,该如何处理才不会增加内存呢。再请教如何释放Socket所占用的内存呢?不是用closesocket(SvrSocket)吗?该用什么呢?
      

  6.   

    释放socket是用closesocket,该函数释放socket相关资源。我觉得你的代码应该是没有问题的。。除非是connect成功了没有释放socket。。会不会有些成功有些失败??成功的就没有释放
      

  7.   

    其实在您的代码中可以将 SvrSockAddr.sin_addr.S_un.S_addr=inet_addr("192.168.0.50");
    SvrSockAddr.sin_port = htons(nPort);
    SvrSockAddr.sin_family = AF_INET;

    SvrSocket = socket(AF_INET, SOCK_STREAM, 0);放在 while 上面。