当前位置: 首页 > 知识库问答 >
问题:

C中的Socket:关闭Socket的正确方法

南宫俊逸
2023-03-14

我经常看到使用套接字的服务器程序的示例代码。

(为了简单起见,这里我不检查函数的返回值,如socket()或bind()等。)

int sockfd = 0, newsockfd = 0;
struct sockaddr_in address;

sockfd = socket(AF_INET, SOCK_STREAM, 0);

bind(sockfd, (struct sockaddr*)&address, sizeof(address));
listen(sockfd, 1);

newsockfd = accept(sockfd, (struct sockaddr*)NULL, NULL);

... do some communication ...

close(newsockfd);

共有1个答案

姬翰林
2023-03-14

如果程序退出,由应用程序分配的资源,如内存或打开的文件描述符(包括套接字)将被现代操作系统自动释放。因此,如果服务器套接字在整个程序中都是可用的(为了接受连接),那么不显式地关闭它是很好的,而是让OS在应用程序退出时这样做。

 类似资料:
  • 当我关闭一个时,它是否也会关闭套接字?因为我不想那样。我希望服务器保持连接,以便向其发送命令。就像我目前正在编写的一个(命令)是“getplayers”。客户端发送一个带有文本(字符串)“getplayers”的对象。然后服务器在命令之间切换,并执行客户端发送的任何命令。如果我的(发送)在完成“getplayers”后关闭套接字,但这不是我想要的。 服务器代码: 客户端代码(我知道它不是这样工作的

  • 本文向大家介绍如何在c语言下关闭socket,包括了如何在c语言下关闭socket的使用技巧和注意事项,需要的朋友参考一下 c语言关闭socket的两种方式 一、shutdown() how的方式有三种分别是 SHUT_RD(0):关闭sockfd上的读功能,此选项将不允许sockfd进行读操作。不允许接受。 SHUT_WR(1):关闭sockfd的写功能,此选项将不允许sockfd进行写操作。不

  • 我目前有一个简单的即时消息程序,它利用Java的Socket和ServerSocket类。它按预期运行,但当我尝试关闭连接时,它没有使用4路握手TCP断开来关闭连接。相反,它使用RST数据包突然关闭连接。 关闭连接的方法是从客户端向服务器发送一个字符串,服务器将把它识别为关闭连接的命令。然后,我在服务器上使用方法,在客户端上使用方法。 使用这些类正确关闭TCP连接的正确方式和/或事件顺序是什么?

  • 本文向大家介绍C#实现Socket通信的解决方法,包括了C#实现Socket通信的解决方法的使用技巧和注意事项,需要的朋友参考一下 本文以实例详述了C#实现Socket通信的解决方法,具体实现步骤如下: 1、首先打开VS新建两个控制台应用程序: ConsoleApplication_socketServer和ConsoleApplication_socketClient。   2、在Console

  • 本文向大家介绍C++ socket实现miniFTP,包括了C++ socket实现miniFTP的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C++ socket实现miniFTP的方法,供大家参考,具体内容如下 客户端: 服务端: 建立连接         连接使用 TCP 连接,服务器和客户端分别创建自己的套接字一端,服务器等待连接,客户端发起连接(并指定服务器 ip)。在两

  • 我正在使用CloseableHttpResponse(来自apache-httpclient-4.5.3),但我不确定我是否正确使用了它,我看到了一个答案,没有投票支持使用: 是抽象的,没有可调用的close方法,尽管在这个回答中使用了: 目前,我正在使用try with resources,用于send方法内部的和。 我是否缺少任何打开的资源或以错误的方式使用它?