如果由于某种原因连接被丢弃,我试图自动重新建立连接。在接受另一个连接之前,是否需要关闭连接的套接字?以下是代码。
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;
}
}
}
答案 0 :(得分:0)
是的,您必须在接受另一个连接之前关闭已打开的套接字。