close(socket_fd) implicit declaration
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