rất đơn giản với QTcpSocket. Bắt đầu như bạn đã làm ...
void MainWindow::connectTcp()
{
QByteArray data; // <-- fill with data
_pSocket = new QTcpSocket(this); // <-- needs to be a member variable: QTcpSocket * _pSocket;
connect(_pSocket, SIGNAL(readyRead()), SLOT(readTcpData()));
_pSocket->connectToHost("127.0.0.1", 9000);
if(_pSocket->waitForConnected()) {
_pSocket->write(data);
}
}
void MainWindow::readTcpData()
{
QByteArray data = pSocket->readAll();
}
Xin lưu ý rằng, để đọc từ TcpSocket bạn có thể nhận dữ liệu trong nhiều lần truyền, tức là. khi máy chủ gửi cho bạn chuỗi "123456", bạn có thể nhận được "123" và "456". Bạn có trách nhiệm kiểm tra xem việc truyền tải có hoàn tất hay không. Thật không may, điều này hầu như luôn luôn kết quả trong lớp học của bạn là nhà nước: các lớp học phải nhớ những gì nó đang mong đợi truyền tải, cho dù nó đã bắt đầu đã và nếu nó hoàn thành. Cho đến nay, tôi đã không tìm ra một cách thanh lịch xung quanh đó.
nhiều nghĩa vụ Robin, bạn có thể cung cấp một số mã để tiếp nhận dữ liệu? –
Chắc chắn. Tôi đã chỉnh sửa câu trả lời của mình cho phù hợp. – Robin
Cảm ơn ngài !! –