QT C++ 与 Linux C 服务器通信:实现跨平台 Socket 连接
是可以的,可以使用 Socket 编程来实现 QT C++ 与 Linux C 服务器之间的通信。
首先,你需要在 Linux C 服务器上创建一个监听 Socket,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define PORT 8888
int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int addrlen = sizeof(address);
char buffer[1024] = {0};
char *hello = 'Hello from server';
// 创建 Socket
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
perror('socket failed');
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(PORT);
// 绑定 Socket
if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
perror('bind failed');
exit(EXIT_FAILURE);
}
// 监听 Socket
if (listen(server_fd, 3) < 0) {
perror('listen failed');
exit(EXIT_FAILURE);
}
// 接受客户端连接
if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) {
perror('accept failed');
exit(EXIT_FAILURE);
}
// 读取客户端发送的数据
read(new_socket, buffer, 1024);
printf('Client: %s
', buffer);
// 向客户端发送数据
send(new_socket, hello, strlen(hello), 0);
printf('Hello message sent
');
return 0;
}
然后,在 QT C++ 中,你可以使用 QT 的 QTcpSocket 类来实现与服务器的通信,代码如下:
#include <QCoreApplication>
#include <QTcpSocket>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTcpSocket socket;
socket.connectToHost('192.168.0.100', 8888); // 替换为你的 Linux C 服务器的 IP 地址和端口号
if (socket.waitForConnected()) {
qDebug() << 'Connected to server';
// 向服务器发送数据
socket.write('Hello from client');
socket.waitForBytesWritten();
// 读取服务器发送的数据
socket.waitForReadyRead();
QString response = socket.readAll();
qDebug() << 'Server: ' << response;
} else {
qDebug() << 'Failed to connect to server';
}
socket.close();
return a.exec();
}
需要注意的是,你需要将 Linux C 服务器的 IP 地址和端口号替换为你的实际情况。另外,在 QT 项目中,你需要在 .pro 文件中添加以下内容来链接 QTcpSocket 类:
QT += network
以上代码只是一个简单的示例,你可以根据实际需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/qh3s 著作权归作者所有。请勿转载和采集!