mirror of
https://github.com/mappu/miqt.git
synced 2025-04-28 08:00:22 +00:00
70 lines
1.4 KiB
Go
70 lines
1.4 KiB
Go
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()
|
|
}
|