sctp: add qt6 qsctpserver + qsctpsocket example

This commit is contained in:
mappu 2025-04-15 20:51:06 +12:00
parent 1fe7c9cc02
commit 1887b2e542
2 changed files with 70 additions and 0 deletions

1
.gitignore vendored
View File

@ -42,6 +42,7 @@ examples/libraries/qt-webengine/qt-webengine
examples/libraries/qt-webkit/qt-webkit
examples/libraries/qt6-multimedia/qt6-multimedia
examples/libraries/qt6-network/qt6-network
examples/libraries/qt6-network-sctp/qt6-network-sctp
examples/libraries/qt6-webengine/qt6-webengine
examples/libraries/restricted-extras-charts6/restricted-extras-charts6
examples/libraries/restricted-extras-qscintilla/restricted-extras-qscintilla

View File

@ -0,0 +1,69 @@
package main
import (
"log"
"os"
qt "github.com/mappu/miqt/qt6"
"github.com/mappu/miqt/qt6/network"
"github.com/mappu/miqt/qt6/network/sctp"
)
func main() {
qt.NewQApplication(os.Args)
// Set up server
// `````````````
localAddr := network.NewQHostAddress7(network.QHostAddress__LocalHost)
srv := sctp.NewQSctpServer()
if !srv.ListenWithAddress(localAddr) {
log.Fatal("SCTP server: Listen failure")
}
srv.OnNewConnection(func() {
log.Println("SCTP server: got connection")
recv := srv.NextPendingDatagramConnection() // QSctpSocket
recv.OnChannelReadyRead(func(channel int) {
dg := recv.ReadDatagram()
log.Printf("SCTP server: channel %v: received message %q", channel, string(dg.Data()))
// Success, experiment over
os.Exit(0)
})
})
localPort := srv.ServerPort()
// Set up client
// `````````````
c := sctp.NewQSctpSocket()
c.OnErrorOccurred(func(param1 network.QAbstractSocket__SocketError) {
log.Println("SCTP client: error")
})
c.OnConnected(func() {
log.Println("SCTP client: connected, sending message...")
dg := network.NewQNetworkDatagram2([]byte("i am the client sending a message"))
ok := c.WriteDatagram(dg)
if !ok {
log.Fatalf("WriteDatagram failure")
}
log.Println("SCTP client: message sent OK")
})
log.Println("SCTP client: connecting...")
c.ConnectToHost2(localAddr, localPort)
// Blocking event loop
// ```````````````````
qt.QApplication_Exec()
}