QT C++在window下可以Linux C服务器通信吗?如何实现
是可以的,可以使用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\n", buffer);
// 向客户端发送数据
send(new_socket, hello, strlen(hello), 0);
printf("Hello message sent\n");
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/iBaS 著作权归作者所有。请勿转载和采集!