在 Linux 中,优雅地关闭 socket 连接需要遵循以下步骤:
shutdown()
函数关闭写操作。这将发送一个 FIN 包给对方,表示你已经完成了发送数据。shutdown(sockfd, SHUT_WR);
char buffer[1024];
while (1) {
ssize_t recv_len = recv(sockfd, buffer, sizeof(buffer), 0);
if (recv_len <= 0) {
break;
}
// 处理接收到的数据
}
close()
函数关闭 socket。这将释放与 socket 相关的所有资源。close(sockfd);
注意:在实际编程中,你可能需要处理错误情况,例如 shutdown()
、recv()
和 close()
函数调用失败的情况。在这些情况下,你应该根据错误代码进行适当的错误处理。
通过遵循这些步骤,你可以优雅地关闭 Linux 中的 socket 连接,确保数据的完整性和正确性。