Содержание
- 2. Компьютер в сети называется узел (хост) и имеет уникальный адрес, который называется IP (internrt pointer). IP
- 3. Большинство стандартных приложений имеют стандартные но-мера, например почтовый сервис привязан к порту 25 (как гово-рят «слушает
- 4. Компьютеры по сети обмениваются пакетами, которые содержат адрес отправителя, адрес получателя и собственно данные (+слу-жебная информация).
- 5. Протоколы бывают разных уровней и работают друг с другом в стеке: протокол, располагающийся на уровне выше,
- 6. TCP – протокол с установлением соединения и гарантированной доставкой пакетов. Сначала производится обмен специальными пакетами для
- 7. ПРОТОКОЛ TCP Сокет TCP может быть серверным или клиентским. Первый про-слушивает порт с некоторым номером, ожидая
- 8. В первом случае выполнение потока, в котором работает сокет, блоки-руется до окончания выполнения очередной операции. Во
- 9. АЛГОРИТМ РАБОТЫ С СЕРВЕРНЫМ СОКЕТОМ Создать экземпляр класса QTcpServer; Перевести сервер в слушающее состояние. Перевести сервер
- 10. ПРИМЕР Консольное приложение: эхо-сервер в блокирующем режиме Создать консольное приложение Qt. стереть лишние команды из файла
- 11. int main(int, char**) { QTextCodec* codec = QTextCodec::codecForName("CP866"); //qDebug() //QTextCodec::setCodecForLocale(QTextCodec::codecForName("CP866")); //cout // qDebug() QTcpServer server; server.listen(QHostAddress::Any,
- 12. QTcpSocket* client; // Клиентский сокет QHostAddress addr; // Адрес клиента QByteArray block; // Блок для обмена
- 13. forever // позволяет повторить процесс получения строки { forever // ожидание поступления данных { if (!client
- 14. client->write(STR("Эхо: ")); client->write(block); client->write("\n"); client->waitForBytesWritten(); } return 0; }
- 15. Консольное приложение: клиент #include #include #include #define STR(s) (codec->fromUnicode(s).constData()) using namespace std; int main(int , char
- 16. QTcpSocket socket; QByteArray block; QString server = "127.0.0.1"; int port = 1234; socket.connectToHost(server, port); cout forever
- 17. forever { if (socket.waitForReadyRead(1000)) { block = socket.readAll(); cout break; } } } return 0; }
- 19. Скачать презентацию