请用c++写一段qt程序,读取图片/home/nvidia/a.jpg,通过tcp传输发送至另一台主机,本地IP为192.168.1.131,目的IP为192.168.1.201,端口为22222,要求写出收发两套程序,接收端均为死循环,收不到就一直收
时间: 2024-03-04 17:52:34 浏览: 20
收端程序:
```c++
#include <QTcpServer>
#include <QTcpSocket>
#include <QFile>
int main(int argc, char *argv[])
{
QTcpServer server;
if (!server.listen(QHostAddress("192.168.1.131"), 22222)) {
qDebug() << "Error: " << server.errorString();
return -1;
}
qDebug() << "Server is listening on port 22222...";
while (true) {
QTcpSocket* socket = server.nextPendingConnection();
qDebug() << "New connection from " << socket->peerAddress().toString();
QFile file("/home/nvidia/b.jpg");
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "Error: " << file.errorString();
return -1;
}
while (socket->bytesAvailable()) {
QByteArray buffer = socket->readAll();
file.write(buffer);
}
file.close();
socket->close();
qDebug() << "File received!";
}
return 0;
}
```
发送端程序:
```c++
#include <QTcpSocket>
#include <QFile>
int main(int argc, char *argv[])
{
QTcpSocket socket;
socket.connectToHost(QHostAddress("192.168.1.201"), 22222);
if (!socket.waitForConnected()) {
qDebug() << "Error: " << socket.errorString();
return -1;
}
qDebug() << "Connected to server!";
QFile file("/home/nvidia/a.jpg");
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "Error: " << file.errorString();
return -1;
}
QByteArray buffer = file.readAll();
qint64 bytesWritten = socket.write(buffer);
qDebug() << bytesWritten << " bytes sent!";
file.close();
socket.close();
return 0;
}
```
注意:这里的文件名 `/home/nvidia/a.jpg` 和 `/home/nvidia/b.jpg` 可能需要根据实际情况进行修改。