Програмиране на мрежова поддръжка в Qt

Съдържание

  • Програмиране на мрежова поддръжка в Qt
  • Модел клиент-сървър
  • Внедряване на сървър, използващ клас QTcpServer
  • Клиентска реализация с помощта на клас QTcpSocket
  • QFtp клас
  • QHttp клас

За да улеснят създаването на мрежови крос-платформени приложения, разработчиците на Qt framework са предоставили модула QtNetwork за работа с мрежата. Модулът QtNetwork съдържа както класове от високо ниво, като QHttp или QFtp, така и класовете QAbstractSocket, QTcpServer, QUdpSocket, с които можете да работите с мрежата на ниско ниво.

Връзка на гнездото

Гнездо е устройство, което прехвърля данни от единия край на връзката към другия. Другият край може да принадлежи на процес, работещ на локалния компютър, или може да бъде разположен на отдалечен компютър, свързан към Интернет и разположен в другото полукълбо на Земята. Връзката на сокет е връзка между точки, която се осъществява между два процеса.

Сокетите са разделени на сокети за дейтаграми и потоци. Сокетите за дейтаграми обменят пакети с данни. Поточните сокети установяват връзка и прехвърлят данни по установената връзка. На практика гнездата за стрийминг се използват много по-често от гнездата за дейтаграми поради факта, че осигуряват допълнителни механизми срещу корупция и загуба на данни. Потоковите сокети работят в двете посоки, т.е. това, което един от процесите записва в потока, може да бъде прочетено от процеса в другия край на връзката и обратно.

За гнезда за дейтаграми Qt осигурява клас QUdpSocket, а за стрийминг - клас QTcpSocket.

Клас QTcpSocket съдържа набор от методи за работа с TCP (Transmition Control Protocol) е мрежов протокол от ниско ниво, който е един от основните протоколи в Интернет. Може да се използва за внедряване на поддръжка за стандартни мрежови протоколи като: HTTP, FTP, POP3, SMTP, и дори за собствените си протоколи. Този клас се наследява от класа QAbstractSocket, което от своя страна наследява от класа QIODevice. Това означава, че за достъп (четене и запис) всички методи на класа трябва да бъдат приложени към неговите обекти QIOУстройство и използвайте класове нишки QDataStream или QTextStream.

Работа в клас QTcpSocket асинхронен, което прави възможно избягването на блокиране на приложението, докато се изпълнява. Но ако не се нуждаете от това, тогава можете да използвате поредица от методи, които започват с думата чакам за. Извикването на тези методи ще изчака операцията да завърши и блокира за известно време изпълнението на вашата програма. Не се препоръчва да извиквате тези методи в GUI нишка.

Клас на основния прозорец на QMainWindow

QMainWindow е много важен клас, който реализира основния прозорец, съдържащ типични джаджи, изисквани от повечето приложения, като менюта, раздели за ленти с инструменти, работна област, ленти за състояние. В този клас външният вид вече е подготвен и неговите джаджи. Освен това.

Работа с файлове. QFile клас

Класът QFile се наследява от класа QIODevice. Той съдържа методи за работа с файлове: отваряне, затваряне, четене и запис на данни. Можете да създадете обект, като предадете низ, съдържащ името на файла в конструктора. Не можете да предадете нищо в конструктора, но го направете след създаването на обекта, като извикате метода. Освен това.

Внедряване на сървър, използващ клас QTcpServer

За реализация на сървъра, Qt предоставя удобен клас QTcpServer за управление на входящи TCP връзки. Програмата, показана на фигурата, е проста сървърна реализация, която приема и признава клиентски заявки. Освен това.