bardzo proste z QTcpSocket. Rozpocząć jak ty ...
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();
}
Należy pamiętać jednak, że do czytania z TcpSocket można odbierać dane z więcej niż jednej transmisji, tj. kiedy serwer wyśle ci ciąg "123456", możesz otrzymać "123" i "456". Twoim obowiązkiem jest sprawdzenie, czy transmisja jest kompletna. Niestety, prawie zawsze powoduje to, że twoja klasa jest stanowa: klasa musi pamiętać, jakiej transmisji oczekuje, czy rozpoczęła się już i czy jest kompletna. Do tej pory nie wymyśliłem tego w elegancki sposób.
Wiele zobowiązany Robin, można podać jakiś kod do odbioru danych? –
Pewnie. Odpowiednio zredagowałem swoją odpowiedź. – Robin
Dziękuję, proszę pana! –