close(socket_fd) implicit declaration

6 浏览
0 Comments

close(socket_fd) implicit declaration

我正在创建一个TCP服务器,但是当我尝试关闭套接字时,它会抛出一个隐式声明错误。

通过从tcpserver.c和tcpclient.c中删除close(sock_fd),代码可以正常运行。

// tcpserver.c

// 包含头文件

#include

#include

#include

#include

#include

#include

#include

#include

// 主函数

int main() {

char server_message[100] = "You have reached the server!";

// 创建服务器套接字

int sock_fd;

sock_fd = socket( AF_INET, SOCK_STREAM, 0 );

// 定义套接字地址

struct sockaddr_in server_addr;

server_addr.sin_family = AF_INET;

server_addr.sin_port = htons(9002);

server_addr.sin_addr.s_addr = INADDR_ANY;

// 绑定套接字

bind(sock_fd, (struct sockaddr *) &server_addr, sizeof(server_addr));

// 监听连接

listen(sock_fd, 5);

// 接受连接

int client_socket_fd;

client_socket_fd = accept(sock_fd, NULL, NULL);

// 发送服务器消息

send(client_socket_fd,server_message, strlen(server_message),0);

// 关闭套接字

close(sock_fd);

return 0;

}

编译时出现错误

make tcpserver

cc tcpserver.c -o tcpserver

tcpserver.c: In function ‘main’:

tcpserver.c:40:9: warning: implicit declaration of function ‘close’; did you mean ‘pclose’? [-Wimplicit-function-declaration]

40 | close(sock_fd);

| ^~~~~

| pclose

0