Server leaves the connections open

Hello everyone !

I have program and there is something wrong with it, i can't run my server immediately after closing it, it leaves some connection(zombies) leave open after the server is stopped. and i have to wait for some time to run the server again.

Here is my code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "NetManager.h"
NetManager::NetManager()
{

}

NetManager::~NetManager()
{

}

void NetManager::Init()
{
    int sockfd;                                 
    char buffer[256];                           
    struct sockaddr_in serv_addr, cli_addr;     
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    
    if(sockfd >= 0)
    {
        bzero((char *) &serv_addr, sizeof(serv_addr));
        serv_addr.sin_family = AF_INET;
        serv_addr.sin_port = htons(2323);
        serv_addr.sin_addr.s_addr = INADDR_ANY;

        if(bind(sockfd, (struct sockaddr*) &serv_addr, sizeof(serv_addr)) < 0)
        {
            exit(1);
        }
        else
        {
            m_sockfd = sockfd;
        }
    }
}

int NetManager::Run()
{
    int newsockfd, pid;             
    socklen_t clilen;               
    struct sockaddr_in cli_addr;    
   
    listen(m_sockfd, 5);
    while(1)
    {
    
        newsockfd = accept(m_sockfd, (struct sockaddr*) &cli_addr, &clilen);
        pid = fork();
               
        if(pid == 0)
        {
            close(m_sockfd);
            p_Game = new Game();
            p_Game->Init(newsockfd);
            exit(0);
        }
        else if(pid == -1010)
        {
            close(m_sockfd);
            p_Game = new Game();
            p_Game->Init(newsockfd);
            exit(0);
        }
        else
        {

            close(newsockfd);
        }
    }
    return 1;
}


Thanks in advance

Ewa
Topic archived. No new replies allowed.