问题描述
我对C完全陌生。
并在套接字上遵循此tutorial。但是,他正在使用close(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()
函数。