在重新接受连接之前是否需要关闭套接字?

时间:2015-02-19 18:49:17

标签: linux sockets

如果由于某种原因连接被丢弃,我试图自动重新建立连接。在接受另一个连接之前,是否需要关闭连接的套接字?以下是代码。

int inbound_socket_thread(void * arg)
{
   int state = INACTIVE;
   sockfd = socket(...)
   // bind sockfd to an addr
   // listen (sockfd, 3)

   while(1)
   {
      switch(state)
      {
         case INACTIVE:
            connectedFd = accept(sockfd, ...)
            ...
            state = ACTIVE;
            break;

         case ACTIVE:
            size = recv(connectedFd, ...)
            if (size > 0)
            { // do something }
            else
               state = CLOSE;

            break;

         case CLOSE:
            close(connectedFd); //<- is this necessary?
            state = INACTIVE;
            break;
      }
   }
}

1 个答案:

答案 0 :(得分:0)

是的,您必须在接受另一个连接之前关闭已打开的套接字。