Qt Creator未定义套接字-Linux

Qt Creator undefined socket - Linux

本文关键字:-Linux 套接字 未定义 Creator Qt      更新时间:2023-10-16

我正在尝试制作一个服务器/客户端应用程序,还试图在QT中为客户端设计一个GUI界面。现在,我已经设法使用库制作了套接字。然而,当我将代码写入QtCreator时,它表明sockaddr_in是未定义的,尽管我已经包含了库。(当我用g++在linux上编译代码时,它运行良好)可能有什么问题?

这就是我声明套接字的方式:sockaddr_in server;

编辑:可能是QT Creator没有g++编译器?如果可能是这种情况,我该如何添加它?很抱歉,但我对QT和编程还很陌生

我使用"启动"按钮来启动我的应用程序,这是其中的代码:

void MainWindow::on_StartButton_clicked()
{
int port;
port=portiuse;
int clientsd;
sockaddr_in server;
if ( ( clientsd = socket(AF_INET, SOCK_STREAM, 0) ) == -1 )
{
perror("[client]Errorn");
return errno;
}
bzero (&server, sizeof (server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_port = htons (port);
if( ( connect(clientsd, (struct sockaddr *) &server, sizeof (struct sockaddr) ) ) == -1 )
{
perror("[client]Error()n");
return errno;
}

}

这些是我得到的错误:

错误:未在此作用域中声明"sockaddr_in"sockaddr_in服务器;^

错误:未在此作用域中声明"server"bzero(&server,sizeof(server));^

错误:未在此作用域中声明"inet_addr"server.sin_addr.s_addr=inet_addr(ip);^

如果您说">包含了库",您的意思是包含<netinet/in.h>吗?

QtCreator确实是一个IDE。它需要知道(或者被告知)在哪里可以找到它的工具链和编译器。您可以在"选项"、"构建和运行"下检查这一点,并使用Qt版本、编译器等选项卡。通常,它会自动检测GCC。

但我想它是在编译,因为您收到了一个关于sockin_addr未定义的错误。否则,只需先尝试构建一个简单的"你好世界"。

我已经修复了它,我只是很笨,忘记添加一个include。感谢大家对的帮助