Dydaktyka:
FeedbackTo jest stara wersja strony!
O Qt [1] [2]
Wersje frameworku
qmake
[1]
Wnętrzności: uic
[2], moc
[3]
Pętla zdarzeń [4], signals
, slots
, connect
[5]
Klasy do obsługi socketów:
QObject::connect
, sygnał newConnection
readyRead
[1]Zadanie 1:
QWidget
jako klasę bazową domyślnie tworzonej klasy*.qmake
):QT += network CONFIG += c++11
QLineEdit
i QSpinBox
) i (opcjonalnie) przycisk do nawiązywania połączenia (QPushButton
)QTextEdit
) i na wpisywanie wiadomości do wysłania (np. QLineEdit
)QTcpSocket
), jeśli trzeba stwórz go w konstruktorzeconnected
, disconnected
i error
(lub zdarzenie stateChanged
) QTextEdit
ma metodę append()
(thread-safe)QLineEdit
wyciąga się metodą text()
QSpinBox
wyciąga się metodą value()
QTcpSocket
nawiązuje się (asynchronicznie) używając metody connectToHost
(metody connect
i disconnect
są zajęte przez obsługę zdarzeń)
IP multicast - przypomnienie
Pula adresów (224/4), lokalne adresy (224/24), Organization-Local Scope
IGMP
Użycie IP multicast w BSD socket API: multicast_example
Zadanie 2a: Wybierzcie wspólnie adres i port grupy multicastowej
Zadanie 2b: Zmodyfikuj poprzedni projekt:
QUdpSocket
)bind
(metodę na obiekcie, nie wywołanie systemowe) dla QHostAddress::AnyIPv4
i wybranego portu, QUdpSocket::ShareAddress
joinMulticastGroup
pod wybrany adres IP grupy.connected
ani disconnected
(chyba że używany jest tryb pseudopołączeniowy; wtedy to pierwsze jest emitowane przy ustalaniu adresu zdanego)receiveDatagram
lub readDatagram
(rozmiar datagramu poznasz metodą pendingDatagramSize
)writeDatagram
na adres grupy
W Qt adres hosta reprezentuje klasa QHostAddress
. Zmiana ciągu znaków (QString
) na adres hosta: QHostAddress(str)
Uwaga: funkcje read
, readAll
i write
dla QUdpSocket
mogą być używane tylko w trybie pseudopołączeniowym.