如何解决如何在C中关闭套接字Linux上的GCC
我对C完全陌生。
并在套接字上遵循此tutorial。但是,他正在使用close(sock)
函数。有两个问题:
- 没有名为
sock
的变量。套接字称为其他名称。 - 我找不到关闭功能。编译器说该函数不存在
请您解释一下。这个问题似乎有点愚蠢。 这是客户端代码:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
{
// Create a socket
int network_socket;
network_socket = socket(AF_INET,SOCK_STREAM,0);
// Address for the socket
struct sockaddr_in server_address;
server_address.sin_family = AF_INET;
server_address.sin_port = htons(9002);
server_address.sin_addr.s_addr = INADDR_ANY;
int connection = connect(network_socket,(struct sockaddr *) &server_address,sizeof(server_address));
printf("%d\n",connection);
char response[256];
recv(network_socket,&response,sizeof(response),0);
printf("%s\n",response);
return 0;
}
解决方法
没有名为sock的变量。套接字被称为其他名称。
是的,在您的代码中是network_socket。因此,您需要close(network_socket);
。
我找不到关闭功能。编译器说该函数不存在
您需要#include <unistd.h>
,在此声明close()。 (如果您查看man close
,则会在顶部看到它。)
您需要传递套接字文件描述符作为close()
的参数。对于您的代码,该值为network_socket
。因此,close()
需要被称为close(network_socket);
此外,您需要将<unistd.h>
标头用于close()
函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。