Portál AbcLinuxu, 9. května 2025 21:43

Dotaz: QTcpSocket

14.3.2010 20:24 kovariadam | skóre: 12 | blog: biased | Košice/Brno
QTcpSocket
Přečteno: 320×
Odpovědět | Admin
Dobrý deň, začínam s Qt a snažím sa podľa príkladov rozbehať komunikáciu cez TCP sockety. Nasledújuci kód nemôžem sfunkčniť. Klient sa dokáže normálne pripojiť, ale nedostane ani správu "Welcome" a server ani nič od neho neprijme.

QTcpSocket tcpSocket;

	if (!tcpSocket.setSocketDescriptor(m_descriptor)) {
		emit error(tcpSocket.error());
		return;
	}

	QString in;
	QTextStream ios(&tcpSocket);

	ios << "Welcome" << endl;
	ios.flush();

	forever {
		in = ios.readAll();
		if(!in.isEmpty())
			qDebug() << in;
	}

	tcpSocket.disconnectFromHost();
	tcpSocket.waitForDisconnected();

Nevie niekto čo robím zle? Za každú radu vopred ďakujem.

Řešení dotazu:


Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Fuky avatar 15.3.2010 01:53 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: QTcpSocket
Odpovědět | | Sbalit | Link | Blokovat | Admin
Grafické programy v Qt 4 – 8 (TCP klient)
-- RÁMO: psí tábor , ETriatlon: Výuka plavání
Fuky avatar 15.3.2010 02:16 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: QTcpSocket
Odpovědět | | Sbalit | Link | Blokovat | Admin
Socket communication with TCP client/server sample code
-- RÁMO: psí tábor , ETriatlon: Výuka plavání
15.3.2010 09:06 kovariadam | skóre: 12 | blog: biased | Košice/Brno
Rozbalit Rozbalit vše Re: QTcpSocket
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ďakujem za odkazy, ale robil som to podľa príkladov, keďže píšem, že s Qt začínam. Takže nevie niekto prečo nefunguje tá komunikácia? Ani signál SIGNAL(readyRead()) nie je nikdy emitovaný. Naozaj tomu nerozumiem.

connect(&tcpSocket, SIGNAL(readyRead()), this, SLOT(read()));

void ServerThread::read()
{
	qDebug() << "Ready" << endl;
}
Fuky avatar 15.3.2010 12:58 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: QTcpSocket
Hoď do přílohy kompletní zdrojový kód, jinak Ti nikdo neporadí.
15.3.2010 13:07 kovariadam | skóre: 12 | blog: biased | Košice/Brno
Rozbalit Rozbalit vše Re: QTcpSocket
Příloha:
Tak prikladam vsetko, nie je toho vela. Dakujem za pozretie
Fuky avatar 15.3.2010 14:53 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: QTcpSocket

Oprav si následující metodu z serverthread.cpp:

void ServerThread::run()
{
	QTcpSocket tcpSocket;

	if (!tcpSocket.setSocketDescriptor(m_descriptor)) {
		emit error(tcpSocket.error());
		return;
	}

	connect(&tcpSocket, SIGNAL(readyRead()), this, SLOT(read()));

	tcpSocket.write("Testuj\n");
        tcpSocket.flush();

	tcpSocket.waitForDisconnected();
	qDebug() << "Close" << endl;
}

Nyní klient dostane text Testuj a server bude čekat než se odpojí tcpSocket.waitForDisconnected();, pokud klient pošle serveru data, tak se zavolá fce read() a na obrazovku se vypíše Ready.

15.3.2010 17:08 kovariadam | skóre: 12 | blog: biased | Košice/Brno
Rozbalit Rozbalit vše Re: QTcpSocket
Ďakujem, už to funguje.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.