Qt Networking avanzato

download Qt Networking avanzato

If you can't read please download the document

description

Approfondisci la conoscenza delle nuove classi di Qt dedicate al networking

Transcript of Qt Networking avanzato

2. QtNetworkmodulo Qt per realizzare programmi di retenon dipende da QtGuifornisce classi di alto livelloclient http/ftpfornisce classi di basso livelloaccesso diretto al socketevent driven (= high performance)supporto SSL 3. QtNetwork alto livellobasso livelloQNetworkAccessManagerQTcpServerQFtp QTcpSocket QUdpServer QUdpSocket QSsl* 4. QNetworkAccessManagermodellato ispirandosi allHTTPun metodo per ogni verbo httpQNetworkRequestpieno supporto per la gestione degli header httpQNetworkReplyaccesso agli header della rispostasegnali per seguire il download un QIODevice 5. QNetworkAccessManagerQNetworkRequest pieno supporto per la gestione degli header httpQNetworkReply accesso agli header della risposta segnali per seguire il download un QIODevice 6. QNetworkAccessManagerclassNetworkDemo:publicQObject{Q_OBJECTpublic:explicitNetworkDemo(QObject*parent=0):QObject(parent),manager(this){reply=manager.get(QNetworkRequest(QUrl("http://www.develer.com/")));QObject::connect(reply,SIGNAL(finished()),this,SLOT(rFinished()));}publicslots:voidrFinished(){qDebug()setCacheDirectory ("cacheDir" );manager>setCache (diskCache );utilizzando lattributo della requestCacheLoadControlAttribute si pu controllare ilmeccanismo di cachelattributo SourceIsFromCacheAttribute per controllare la provenienza della risposta 17. QNetworkCookieJarcookie storage non permanentenessuna policy di accettazionesi accettano tutti i cookiepolicy di sicurezza basesame originper cambiare il comportamentosubclass 18. QNetworkProxyinstrada le connessioni attraverso un proxySOCK5, HTTP, HTTP Caching, FTP Cachingtransparente rispetto al restante codice di reteapplication wide / per socketanonymous, username/password 19. QNetworkProxyQNetworkProxyproxy;proxy.setType(QNetworkProxy::Socks5Proxy);proxy.setHostName("proxy.example.com");proxy.setPort(1080);proxy.setUser("username");proxy.setPassword("password");QNetworkProxy::setApplicationProxy(proxy); 20. low level networkingHTTPServer::HTTPServer(QObject*parent):QObject(parent),server(this){server.listen(QHostAddress::Any,8080);QObject::connect(&server,SIGNAL(newConnection()),this,SLOT(newConnection()));}voidHTTPServer::newConnection(){QTcpSocket*socket=server.nextPendingConnection();QObject::connect(socket,SIGNAL(readyRead()),this,SLOT(onDataReady()));QObject::connect(socket,SIGNAL(disconnected()),this,SLOT(onSocketDisconnected()));}voidHTTPServer::onDataReady(){QTcpSocket*socket=qobject_cast(sender());if(socket){socket->write("HTTP/1.1 200 OKrnrnhello world");socket->disconnectFromHost();}}voidHTTPServer::onSocketDisconnected(){QTcpSocket*socket=qobject_cast(sender());if(socket)socket->deleteLater();} 21. low level networkingsupporto di rete high 9000 8000end 8000 7000alta scalabilit7000 6000nessuna magia6000 50005000code cross platform 4000 4000 reply/serrorsRSS 30003000 20002000 10001000 0 0 1000 2000 3000 4000 4500 5000 5500 6000 6500 7000 7500 8000 22. [email protected]